Cristic

Cristic 查看完整档案

其它编辑  |  填写毕业院校区块链  |  区块链工程师 编辑填写个人主网站
编辑

Hi~
我是Cristic

个人动态

Cristic 发布了文章 · 2019-11-19

安装mysql5.7

1.下载mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz的安装包

tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz

2.解压mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz

# tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz

3.将解压的文件重命名mysql,并移动到/usr/local目录下

# mv mysql-8.0.13-linux-glibc2.12-x86_64 mysql
# mv mysql /usr/local/

4.进入到/usr/local目录下,创建用户和用户组并授权

# cd /usr/local/
# groupadd mysql
# useradd -r -g mysql mysql
# cd mysql/ #注意:进入mysql文件下授权所有的文件
# chown -R mysql:mysql ./

5.再/usr/local/mysql目录下,创建data文件夹

# mkdir data

6.初始化数据库,并会自动生成随机密码,记下等下登陆要用

# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

7.修改/usr/local/mysql当前目录得用户


如果出现 `error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory`。解决问题具体操作如下。

yum -y install numactl
yum -y install libaio


# chown -R root:root ./
# chown -R mysql:mysql data

8.复制文件my.cnf,开始是没有my-default.cnf这个文件,需要手动创建。可以用# touch my-default.cnf命令创建一个,并配置权限。

# cp support-files/my-default.cnf /etc/my.cnf 
# chmod 777 ./my-default.cnf 

# cd support-files/
# touch my-default.cnf
# chmod 777 ./my-default.cnf 
# cd ../
# cp support-files/my-default.cnf /etc/my.cnf

配置my.cnf

# vim /etc/my.cnf 
[mysqld]
 
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
 
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
 
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
tmpdir = /tmp
port = 3306
#lower_case_table_names = 1
# server_id = .....
# socket = .....
#lower_case_table_names = 1
max_allowed_packet=32M
default-authentication-plugin = mysql_native_password
#lower_case_file_system = on
#lower_case_table_names = 1
log_bin_trust_function_creators = ON
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 
 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

如果后期mysql运行报错,可以直接到log-error = /usr/local/mysql/data/error.log目录下直接查看错误日志

命令:cat /usr/local/mysql/data/error.log

10.开机自启,进入/usr/local/mysql/support-files进行设置

# cd support-files/
# cp mysql.server /etc/init.d/mysql 
# chmod +x /etc/init.d/mysql

11.注册服务

# chkconfig --add mysql

12.etc/ld.so.conf要配置路径,不然报错

# vim /etc/ld.so.conf
 
添加如下内容:
/usr/local/mysql/lib
:q

13.配置环境变量

# vim /etc/profile
# source /etc/profile
 
添加如下内容:
#MYSQL ENVIRONMENT
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib

如果每次退出容器,需要source /etc/profile

  1. 启动服务
# cp -a ./support-files/mysql.server /etc/init.d/mysqld
# cd bin/
# ./mysqld_safe --user=mysql &
# /etc/init.d/mysqld restart

15.登陆,这里输入上面第6步随机生成得密码,细心点输入,没有显示的,登陆成功如图所示

# mysql -uroot -p
... 
密码
...

如果失败,出现/tmp/mysql.sock。 首先删除/tmp/mysql.sock,然后给目录授权 chown -R mysql.mysql /tmp/*

# rm -rf /tmp/mysql.sock
# chown -R mysql.mysql /tmp/*

如果出现,无法登陆的情况修改my.cnf文件。[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程。

# vim /etc/my.cnf
...
...

重启服务

# /etc/init.d/mysqld restart

重新设置密码

# mysql
mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root";

mysql> flush privileges;
mysql> quit
查看原文

赞 0 收藏 0 评论 0

Cristic 发布了文章 · 2019-09-28

FISCO BCOS 区块链学习资料

FISCO-BCOS Resources

实践步骤

  1. 部署区块链,指导手册
  2. 合约开发,指导手册
  3. 应用开发脚手架,项目下载和指导手册
  4. 体验案例,存证
  5. 其他,体验分布式身份标识WeIdentity和体验物联网连接器WeEvent

系统要求

配置最低配置推荐配置
CPU2核 1.5GHz4核 2.4GHz
内存2G4GB
带宽1M5M
JavaJava(TM) 1.8推荐Oralce JDK
如果在CentOS中使用Open JDK,请先升级到1.9
操作系统能正常运行JVM即可快速安装Bash脚本在以下环境测试通过:
CentOS7.2 + Ubuntu16.04RedHat7.4
Java服务在以下环境测试通过:
CentOS7.2Ubuntu16.04RedHat7.4

文档

单机部署区块链

进行开发、测试,以及演示的时,可以使用单机模拟

应用开发脚手架

开发者可以通过下载脚手架,进行配置修改可以直接进行开发。

该项目是基于Web3SDKspring boot版本的示例项目。提供FISCO BCOS区块链应用开发的基本框架和基本的测试案例,帮助开发者基于 FISCO BCOS区块链快速进行应用开发。此版本只支持FISCO BCOS 2.0

区块链开发工具集

  1. Web3SDK
    Web3SDK为FISCO BCOS提供Java API。利用FISCO BCOS JAVA SDK可以简单快捷的基于FISCO-BCOS进行区块链应用开发。

  2. Python SDK
    Python SDK为FISCO BCOS提供Python API,使用FISCO BCOS Python SDK可以简单快捷的基于FISCO-BCOS进行区块链应用开发。

  3. Nodejs SDK
    Node.js SDK为FISCO BCOS提供Node.js API,使用FISCO BCOS Node.js SDK可以简单快捷地基于FISCO-BCOS进行区块链应用开发。

  4. console
    console 控制台是FISCO BCOS 2.0的重要交互式客户端工具。控制台拥有丰富的命令,包括查询区块链状态、管理区块链节点、部署并调用合约等。

WeBASE

WeBase是在区块链应用和FISCO BCOS节点之间搭建的一套通用组件,围绕交易、合约、密钥管理,数据,可视化管理来设计各个模块;开发者可以根据业务所需,选择子系统进行部署。

WeIdentity

WeIdentity是一套基于区块链的分布式多中心的技术解决方案,提供分布式实体身份标识及管理、可信数据交换协议等一系列的基础层与应用接口,可实现实体对象(人或物)数据的安全授权与交换。

WeEvent

WeEvent是一套分布式事件驱动架构,实现了可信、可靠、高效的跨机构、跨平台事件通知机制。秉承分布式商业模式中对等合作、智能协同、价值共享的设计理念,致力于提升机构间合作效率,降低合作成本,同时打通应用程序、物联网、云服务和私有服务等不同平台,最终在不改变已有商业系统的开发语言、接入协议的情况下,做到跨机构、跨平台的事件通知与处理。

WeCross

WeCross是分布式商业区块链跨链协作平台。该平台能解决业界主流的区块链产品间接口不互通、无法协作的问题,以及区块链系统无法平行扩展、计算能力和存储容量存在瓶颈等问题。WeCross作为未来分布式商业区块链互联的基础架构,秉承公众联盟链多方参与、共享资源、智能协同和价值整合的理念,致力于促进跨行业、机构和地域的跨区块链价值交换和商业合作,实现了高效、通用和安全的区块链跨链协作机制。

应用落地情况

FISCO BCOS已落地应用达数十个,场景覆盖政务、金融、公益、医疗、教育、交通、版权、商品溯源、供应链、招聘、农业、社交、游戏等多个领域,如:

金融业:机构间对账、供应链金融、旅游金融等。
司法服务:仲裁链、电子借据等。
文化版权:版权存证与交易等。
社会管理:不动产登记等。
此处提供一些具有代表性的落地应用案例

更多材料

查看原文

赞 2 收藏 1 评论 0

Cristic 发布了文章 · 2019-08-02

快速安装体验WeEvent

WeEvent是一套分布式事件驱动架构,实现了可信、可靠、高效的跨机构、跨平台事件通知机制。

快速安装

快速安装是为了方便用户搭建开发和测试环境,在单台机器上快速部署WeEvent服务。提供Docker镜像、Bash脚本两种安装方式。

以下安装过程以Centos 7.2为例。

Docker镜像安装

$ docker pull weevent/weevent:1.0.0; docker run -d -p 8080:8080 weevent/weevent:1.0.0 /root/run.sh

WeEvent的镜像里包括了FISCO-BCOS网络,WeEvent服务的子模块BrokerGovernance,以及各种依赖。

Bash安装

需要的一些基础工具yum install wget tree tar dos2unix lsof gcc openssl-devel pcre-devel

  • 获取安装包

    github下载安装包weevent-1.0.0.tar.gz,并且解压到/tmp/

    $ cd /tmp/
    $ wget https://github.com/WeBankFinTech/WeEvent/releases/download/v1.0.0/weevent-1.0.0.tar.gz
    $ tar -zxf weevent-1.0.0.tar.gz

    如果github下载速度慢,可以尝试国内下载链接

解压后目录结构如下:

$ cd weevent-1.0.0/ 
$ tree -L 2
.
├── bin
│   ├── check-service.sh
│   ├── start-all.sh
│   ├── stop-all.sh
│   └── uninstall-all.sh
├── config.properties
├── install-all.sh
├── modules
│   ├── broker
│   ├── governance
│   └── nginx
└── third-packages
    └── nginx-1.14.2.tar.gz
  • 修改配置

    默认配置文件./config.properties如下:

    # Required module
    # support 2.0 and 1.3
    fisco-bcos.version=2.0
    # FISCO-BCOS node channel, eg: 127.0.0.1:20200;127.0.0.2:20200
    fisco-bcos.channel=127.0.0.1:20200
    # The path of FISCO-BCOS 2.0 that contain certificate file ca.crt/node.crt/node.key,
    # OR FISCO-BCOS 1.3 that contain ca.crt/client.keystore
    fisco-bcos.node_path=~/FISCO-BCOS/127.0.0.1/node0/conf
    
    # Required module
    nginx.port=8080
    
    # Required module
    broker.port=8090
    
    # Optional module
    governance.enable=false
    governance.governance.port=8099
    governance.mysql.ip=127.0.0.1
    governance.mysql.port=3306
    governance.mysql.user=xxx
    governance.mysql.password=yyy

    配置说明 :

    • 区块链FISCO-BCOS

      • fisco-bcos.version

        FISCO-BCOS 2.01.3版本都支持,推荐使用2.0及以上版本。

      • fisco-bcos.channel

        区块链节点的channel访问入口。配置多个节点时用;分割,如127.0.0.1:8821;127.0.0.2:8821

      • fisco-bcos.node_path

        区块链节点的访问证书、私钥存放目录。FISCO-BCOS 2.0的证书文件为ca.crtnode.crtnode.key1.3版本的证书文件为ca.crtclient.keystore
        如果WeEvent服务和区块链节点不在同一台机器上,需要把证书文件拷贝到WeEvent机器的当前目录,修改fisco-bcos.node_path=./

    • Nginx监听端口nginx.port
    • Broker监听端口broker.port
    • Governance模块配置

      • governance.enable是否安装Governance模块,默认为false不安装
      • 监听端口governance.port
      • Mysql配置governance.mysql.*
  • 一键安装

    以安装到目录/usr/local/weevent/为例。

    $ ./install-all.sh -p /usr/local/weevent/

    正常安装后,输出有如下关键字:

    8081 port is okay
    8080 port is okay
    param ok
    install module broker 
    install broker success 
    install module nginx 
    install nginx success 

    如果安装失败,可以在安装日志./install.log中查看更多细节。

    目标安装路径/usr/local/weevent/的结构如下

    $ cd /usr/local/weevent/
    $ tree -L 2
    .
    |-- broker                        
    |   |-- apps
    |   |-- broker.sh
    |   |-- check-service.sh
    |   |-- conf
    |   |-- deploy-topic-control.sh
    |   |-- lib  
    |   `-- logs
    |-- check-service.sh                
    |-- nginx                            
    |   |-- conf
    |   |-- html
    |   |-- logs
    |   |-- nginx.sh
    |   |-- nginx_temp
    |   `-- sbin   
    |-- start-all.sh                    
    |-- stop-all.sh                    
    `-- uninstall-all.sh
  • 启停服务

    • 启动服务

      在服务安装目录下/usr/local/weevent,通过start-all.sh命令启动所有服务 ,正常启动如下:

      $ ./start-all.sh
      start broker success (PID=3642)
      add the crontab job success
      start nginx success (PID=3643)
      add the crontab job success
    • 停止所有服务的命令./stop-all.sh
  • 检查是否安装成功

    $ ./check-service.sh
    check broker service 
    broker service is ok
查看原文

赞 0 收藏 0 评论 0

Cristic 发布了文章 · 2019-05-06

Docker 脚本化一键部署

Docker

  • install Docker

参照官网

  • install kubernetes

安装kubernetes的时候,需要安装kubelet, kubeadm等包,但k8s官网给的yum源是packages.cloud.google.com,国内访问不了,此时我们可以使用阿里云的yum仓库镜像。

阿里云上没有附Help说明连接,简单摸索了下,如下设置可用(centos)。注意不要开启check。

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

开发思路

1 寻找基础镜像
2 基于基础镜像编写Dockerfile脚本
3 根据Dockerfile脚本创建项目镜像
4 将创建的镜像推送到docker仓库 (根据自身需要,可做可不做)
5 基于项目镜像创建并运行docker容器 (实现最终部署)

思路:使用 centos 容器安装对应的软件环境,最后将环境导出。

操作步骤

  1. 创建容器
$ docker pull centos    
$ sudo docker run --privileged --cap-add SYS_ADMIN -e container=docker -it --name my_centos -p 80:8080  -d  --restart=always centos:7 /usr/sbin/init 
  1. 启动容器
$ docker exec -it my_centos /bin/bash
  1. 导出和导入
$ docker export my_centos > /data/app/meifen/my_centos-export-0428.tar

$ docker import  /data/app/meifen/my_centos-export-0428.tar
  1. 保存save

格式:docker save IMAGE(镜像)

使用 docker images 查看本机已有的镜像(也可以使用 docker commit <CONTAIN-ID> <IMAGE-NAME>命令把一个正在运行的容器保存为镜像)

$ docker save 9610cfc68e8d > /data/app/meifen/my_centos-export-0428.tar
  • 加载 load

有点慢,稍微等待一下,没有任何warn信息就表示保存OK。9610cfc68e8d 是镜像ID

现在就可以在任何装 docker 的地方加载 刚保存的镜像了

$ docker load < /home/my_centos-export-0428.tar

其他说明
镜像和容器 导出和导入的区别

1 容器导入 是将当前容器变成一个新的镜像
2 镜像导入 是复制的过程

save 和 export区别

1 save 保存镜像所有的信息-包含历史
2 export 只导出当前的信息

export导出的镜像文件大小 小于 save保存的镜像。export 导出(import导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史,所以无法进行回滚操作(docker tag <LAYER ID> <IMAGE NAME>);而save保存(load加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。(查看方式:docker images --tree) 。export 只导出当前的信息

提交Docker-hub

  1. 提交镜像
$ docker commit -a "cristic" -m "commit content"  801a40ffa673  cristicmei/name:v1.0.0
  1. 查看镜像
$ docker images
  1. 登录docker-hub
$ docker image

前提是用户有docker-hub的账号

  1. 提交远程仓库
$ docker push cristicmei/name:v1.0.0

精简Docker镜像大小的必要性

Docker镜像由很多镜像层(Layers)组成(最多127层),镜像层依赖于一系列的底层技术,比如文件系统(filesystems)、写时复制(copy-on-write)、联合挂载(union mounts)等技术,可以查看Docker社区文档以了解更多有关Docker存储驱动的内容,这里不再赘述。总的来说,Dockerfile中的每条指令都会创建一个镜像层,继而会增加整体镜像的尺寸。

下面是精简Docker镜像尺寸的好处:

减少构建时间
减少磁盘使用量
减少下载时间
因为包含文件少,攻击面减小,提高了安全性
提高部署速度
  • 最重要的因素是减少镜像的层数,这样能大大减小镜像的大小;

使用链式代码“&&”把多行指令结合成一行

  • 清除 yum 缓存
$ yum clean headers
$ yum clean packages
$ yum clean all
  • 清除无用的tar.gz安装包
  • 选择更小的基础镜像

ISSUE

/var/lib/docker/overlay2 占用很大,清理Docker占用的磁盘空间,迁移 /var/lib/docker 目录

1.命令查看磁盘使用情况

$ du -hs /var/lib/docker/ 

用于查看Docker的磁盘使用情况

$ docker system df
  1. 清理磁盘
$ docker system prune 

可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。

$ docker system prune -a
  1. 迁移 /var/lib/docker 目录
查看原文

赞 0 收藏 0 评论 0

Cristic 分享了头条 · 2019-04-25

WeEvent是一套分布式事件驱动架构,实现了可信、可靠、高效的跨机构、跨平台事件通知机制。 WeEvent由微众银行自主研发并完全开源,秉承分布式商业模式中对等合作、智能协同、价值共享的设计理念,致力于提升机构间合作效率,降低合作成本,同时打通应用程序、物联网...

赞 1 收藏 0 评论 1

Cristic 发布了文章 · 2019-03-29

一键部署脚本

一键部署脚本

shell 脚本:

常用命令

wget,tar,zip,
cd,ls,rm,cp,mkdir
echo,sed,ps,netstat
grep,awk,,wc,head,tail,exit

流程和注意事项

1. 参数的输入

明确方法或者模块的入参,一般入参是用户需要自己填写的参数。
例如:

$./install.sh -P /data/root/test"

用户需要执行行脚本install.sh,入餐分别是-P/data/root/test

2. 用法检查

检测用户的入参数,提示用户怎么用,比如说 ./install.sh -P /data/root/test
脚本说明:

if [ $# -lt 2 ]; then
    echo "Usage:"
    echo "    ./install.sh -P /data/root/test"
    exit 1
fi
3. 读取配置文件,获取参数

读取配置文件,解析配置文件的参数,检查配置是否合理
假设使用的配置是test.ini

$ cat test.ini
[mysql]
ip=127.0.0.1
port=3306
  • 读取配置文件和参数
value=$(crudini --get $file $section $param)
mysql_ip=$($value "mysql" "ip")

通过上面可以获取mysql_ip

  • 检查配置
function checkIp(){
    if [[ $ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
      exit 0
    else
      echo "fail"
      exit 1
    fi
}

function checkPort(){
    local port="$1"
    local -i port_num=$(to_int "${port}" 2>/dev/null)

    if (( $port_num < 1 || $port_num > 65535 )) ; then
        echo "*** ${port} is not a valid port" 1>&2
        exit 1
    fi
}
4. 拼接参数和安装模块
  • 如果有不同模块安装,用户需要进行并且参数,并安装其他的模块。
5. 编写启动脚本、停止脚本
  • 启动服务脚本
  • 停止服务脚本
  • 监控脚本
6. 编写监控脚本

通过crontab,进行服务的拉起。当停止脚本时,需要将crontab对应的job,进行移除。

7. 检查服务脚本

编写curl脚本,查看服务是否正常,以及检查重要的接口是否正常运行。

8. 其他
  • 统一处理控制台输出

更多

查看原文

赞 0 收藏 0 评论 0

Cristic 分享了头条 · 2019-03-27

WeIdentity是一套分布式多中心的技术解决方案,可承载实体对象(人或者物)的现实身份与链上身份的可信映射、以及实现实体对象之间安全的访问授权与数据交换。WeIdentity由微众银行自主研发并完全开源,秉承公众联盟链整合资源、交换价值、服务公众的理念,致力于成...

赞 0 收藏 0 评论 0

Cristic 发布了文章 · 2019-01-11

搭建grafana+influxdb+telegraf,以及常见问题

1.Install

1.1. influxdb

sudo yum install influxdb
sudo systemctl start influxdb

判断已经安装完成,输入下面的命令,可以进入influxDB的界面

> influx

1.2. Telegraf 修改版本

wget https://dl.influxdata.com/telegraf/releases/telegraf-1.9.1_linux_amd64.tar.gz
        tar xf telegraf-1.9.1_linux_amd64.tar.gz
telegraf -version

1.2.3 启动服务

config: /etc/telegraf/telegraf.conf

sudo systemctl start telegraf
sudo systemctl status telegraf 
sudo systemctl enable telegraf

1.3. Grafana 修改版本

1.3.1 安装grafana

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1.2-1.x86_64.rpm 

1.3.2 启动服务、添加开机启动:

systemctl enable grafana-server
systemctl start grafana-server

1.3.3 配置说明

# 配置文件 /etc/grafana/grafana.ini
# systemd服务名 grafana-server.service
# 默认日志文件 /var/log/grafana/grafana.log
# 默认数据库文件 /var/lib/grafana/grafana.db

1.3.4 add plugin

添加插件

sudo grafana-cli plugins install grafana-clock-panel
sudo systemctl restart grafana-server

2. grafana 需要关注的几个点

2.1 Metric

For Mode there are three options:

The default option is Time and means the x-axis represents time and that the data is grouped by time (for example, by hour or by minute).

The Series option means that the data is grouped by series and not by time. The y-axis still represents the value.
The Histogram option converts the graph into a histogram. A Histogram is a kind of bar chart that groups numbers into ranges,
often called buckets or bins.
Taller bars show that more data falls in that range. Histograms and buckets are described in more detail here.

2.2 Variables

Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data being displayed in your dashboard.

2.3 templating

时间间隔

1. 选择 New 按钮新建一个模板变量
2. 选择 Interval 变量类型,我们可以用这种变量表达时间间隔,同时设置 Name 和 Label,Name 是变量名称,实际引用的时候用$变量名称进行引用;Label 本身无实际作用,主要是用来展示在界面,让用户更加容易理解的。
3. 可以看到在 Values 中,已经有大量预置的时间间隔,我们可以在其中增加,诸如 1m(1分钟),1h(1小时),1d(1天)等时间间隔变量
在界面,我们可以见到已经生成了名为时间间隔的下拉框列表,列表中包括了我们设置的时间间隔预设值
4. 将时序查询的 interval 设置为 $t (t 为我们设置的变量Name)。此时在下拉框里选择不同的时间间隔,图表将随之进行切换。

基于查询结果的下拉列表


前置步骤请参考时间间隔变量设置
选择Query 类型
Data source 选择你查询的目标数据源
Query 是查询所有可能值的查询语句,ES/Logdb 的查询方式是{"find": "terms", "field": "status"},其中status 是我们查询的目标字段,在这里可以替换成你需要的字段。更深入的语法请参考 ES 官方文档。
Regex 可以选择对于返回的状态值进行正则表达式过滤
Sort 选择排序方式
Multi-value 控制下拉框是否可以支持多选,如果不选中则只能单选
Include all value 控制是否可以支持All选项,支持全选所有的值,只在多选的模式下有效果
Preview of values 可以预览这个字段的所有值

templating

2.4 provisioning

  1. edit the config grafana.ini
# folder that contains provisioning config files that grafana will apply on startup and while running.
;provisioning = conf/provisioning
  1. add the dashborads.yaml and db.yaml file, location in /etc/grafana/provisioning/dashborads and /etc/grafana/provisioning/databases

3. 常见问题

3.1 how to get the parameter from the url

for example, nodename

  1. set Custom Variables ,name as nodename
  2. add the parameter var-nodename=“test”,such as
Use  Url http://servername:3000/dashboard/db/dashboard?refresh=10s&var-nodename=“test”

  1. In Query: use where clause as shown below:
WHERE nodename =$nodename

you can see the output

select * 
from table
where nodename ="test"

3.2 nginx 反向代理到 grafana

grafana配置nginx反向代理

将grafana配到www.myserver.com域名的/grafana/的location下

  1. nginx配置
location /grafana/ {
                proxy_pass http://grafana_server:3000/;
                proxy_set_header   Host $host;
        }
  1. grafana配置文件修改
#在/etc/grafana/grafana.ini配置文件中修改
domain = www.myserver.com
root_url = %(protocol)s://%(domain)s/grafana

4. influxDB+telegraf

4.1 监听多台服务

  1. 在需要监控的机器上面安装对应的telegraf
  2. 并且配置上报的influxdb的机器和数据库
#Configuration for influxdb server to send metrics to 

[[outputs.influxdb]] 

urls = [“http://1x.xxx:8086”] #influxdb地址 

database = “telegraf_ali” # required #influxdb数据库 

retention_policy = “”#数据保留策略 

write_consistency = “any” #数据写入策略,仅适用于集群模式 

timeout = “5s” #写入超时策略 

username = “telegraf_ali” #数据库用户名 

password = “gPHhbeh” #数据库密码 

#user_agent = “telegraf” #采集器代理名称

4.1.1 TRY

  1. A机器部署influxdb+telegraf
> influx
> use telegraf;
> SHOW TAG VALUES FROM system WITH KEY=host
# 可以看到一台主机的信息
  1. B机器部署telegraf
  2. 在B机器,修改telegrafinfluxdb地址,使用默认telegraf
  3. 重启机器B 的telegraf机器

进入A机器

> influx
> use telegraf;
> SHOW TAG VALUES FROM system WITH KEY=host
  • 上面查询主机的信息1条--> 两条主机信息,说明操作成功

image

POLICY

> CREATE RETENTION POLICY "2h0m0s" ON "telegraf" DURATION 2h REPLICATION 1 DEFAULT
> SHOW RETENTION POLICIES ON telegraf
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        false
2h0m0s  2h0m0s   1h0m0s             1        true
SELECT time,host,usage_system FROM "autogen".cpu limit 2
name: cpu
time                host             usage_system
----                ----             ------------
1526008670000000000 VM_42_233_centos 1.7262947210419817
1526008670000000000 VM_42_233_centos 1.30130130130254
SELECT 100 - usage_idel FROM "autogen"."cpu" WHERE time > now() - 1m and "cpu"='cpu0'

4.2 COMMAND

SHOW MEASUREMENTS  --查询当前数据库中含有的表
SHOW FIELD KEYS --查看当前数据库所有表的字段
SHOW series from pay --查看key数据
SHOW TAG KEYS FROM "pay" --查看key中tag key值
SHOW TAG VALUES FROM "pay" WITH KEY = "merId" --查看key中tag 指定key值对应的值
SHOW TAG VALUES FROM cpu WITH KEY IN ("region", "host") WHERE service = 'redis'
DROP SERIES FROM <measurement_name[,measurement_name]> WHERE <tag_key>='<tag_value>' --删除key
SHOW CONTINUOUS QUERIES   --查看连续执行命令
SHOW QUERIES  --查看最后执行命令
KILL QUERY <qid> --结束命令
SHOW RETENTION POLICIES ON mydb  --查看保留数据
查询数据
SELECT * FROM /.*/ LIMIT 1  --查询当前数据库下所有表的第一行记录
select * from pay  order by time desc limit 2
select * from  db_name."POLICIES name".measurement_name --指定查询数据库下数据保留中的表数据 POLICIES name数据保留
删除数据
delete from "query" --删除表所有数据,则表就不存在了
drop MEASUREMENT "query"   --删除表(注意会把数据保留删除使用delete不会)
DELETE FROM cpu
DELETE FROM cpu WHERE time < '2000-01-01T00:00:00Z'
DELETE WHERE time < '2000-01-01T00:00:00Z'
DROP DATABASE “testDB” --删除数据库
DROP RETENTION POLICY "dbbak" ON mydb --删除保留数据为dbbak数据
DROP SERIES from pay where tag_key='' --删除key中的tag

SHOW SHARDS  --查看数据存储文件
DROP SHARD 1
SHOW SHARD GROUPS
SHOW SUBSCRIPTIONS

4.3 grafana tools

- [Puppet](https://forge.puppet.com/puppet/grafana)
- [Ansible](https://github.com/cloudalchemy/ansible-grafana)
- [Chef](https://github.com/JonathanTron/chef-grafana)
- [Saltstack](https://github.com/salt-formulas/salt-formula-grafana)
- [Jsonnet](https://github.com/grafana/grafonnet-lib/)
- [quick install](https://github.com/samuelebistoletti/docker-statsd-influxdb-grafana)

4.3.1 quick install

Centos 7 docker 启动grafana容器报"iptables No chain/target/match by that name"

docker run -d -p 3000:3000  grafana/grafana:5.1.0  
Error response from daemon: Cannot start container 565c06efde6cd4411e2596ef3d726817c58dd777bc5fd13762e0c34d86076b9e: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3888 -j DNAT --to-destination 192.168.42.11:3888 ! -i docker0: iptables: No chain/target/match by that name

4.3.2 解决方法:

vim /etc/sysconfig/iptables

*nat
:PREROUTING ACCEPT [27:11935]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [598:57368]
:POSTROUTING ACCEPT [591:57092]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:DOCKER - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.0.0.0/8 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
-A INPUT -s 172.16.0.0/12 -j ACCEPT
-A INPUT -s 192.168.0.0/16 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 36091 -j ACCEPT
-A INPUT -j DROP
-A FORWARD -j DROP
-A OUTPUT -j ACCEPT
COMMIT

5. remove

5.1 remove influxdb

卸载命令:

[root@localhost shared]# rpm -q influxdb 
influxdb-0.8.7-1.x86_64 
[root@localhost shared]# rpm -e influxdb 
[root@localhost shared]# rpm -q influxdb 
package influxdb is not installed

参数说明:

首先通过 rpm -q <关键字> 可以查询到rpm包的名字
然后 调用 rpm -e <包的名字> 删除特定rpm包
如果遇到依赖,无法删除,使用 rpm -e --nodeps <包的名字> 不检查依赖,直接删除rpm包
如果恰好有多个包叫同样的名字,使用 rpm -e --allmatches --nodeps <包的名字> 删除所有相同名字的包, 并忽略依赖
删除完后,清除已有文件:

[root@localhost opt]# ls 
influxdb 
[root@localhost opt]# rm -rf influxdb 
[root@localhost opt]# ls

处理端口占用

name=$(lsof -i:8086|tail -1|awk '"$1"!=""{print $2}')
if [ -z $name ]
then
    echo "No process can be used to killed!"
    exit 0
fi
id=$(lsof -i:8086|tail -1|awk '"$1"!=""{print $2}')
kill -9 $id
 
echo "Process name=$name($id) kill!"
exit 0

5.2 remove grafana

移除命令

sudo yum remove grafana

5.3 remove telegraf

sudo yum remove telegraf
查看原文

赞 1 收藏 0 评论 0

Cristic 关注了问题 · 2018-12-26

解决Chrome 里的请求报错 "CAUTION: Provisional headers are shown" 是什么意思?

这次是在 Chrome 扩展里提交请求遇到的... 以前也遇到过几次,,
这个究竟是出了什么问题呢?

关注 50 回答 12

Cristic 发布了文章 · 2018-12-01

入门量子计算

1. 应用方向

PR_338248_CIOsGuideToQuantumComputing_Graphics.jpg


2. 公司

ID Quantique 于2001 年成立于瑞士日内瓦,主攻基于传统和量子技术的高性能多协议网络加密(量子密钥分配),以及量子随机数生成器的技术开发,主要为金融、国防、政府部门,以及在线游戏、数学模拟等领域提供网络安全服务。
美国公司KnuEdge 成立于2005 年。该公司具有很强的传奇色彩:其创始人是美国前宇航局(NASA)局长丹尼尔·戈尔丁(Daniel Goldin)。丹尼尔自宇航局卸任之后行踪隐秘,甚至从媒体报道中消失,直到10 年后宣布其创立的量子计算公司KnuEdge 推出模仿人类神经网络、名为KnuPath 的首款芯片。公司宣称其开发的是革命性技术,为新一代机器学习系统开发未来所需的工具,并改进语音识别等人机交互界面,以推动人工智能的发展。从媒体评价来看,这是一家希望超越Google、 AMD 和Intel 的量子芯片公司。公司已获得1 亿美元的巨额天使投资,在2016 年中时已实现2000 万美元营收,客户覆盖大型计算机公司与财富500 强企业,涉及航空航天、金融、医疗、酒店、保险等行业。
由前 IBM 应用物理学家 Chad Rigetti 创立于2013 年,致力于量子计算系统开发,使命是“打造世界最强大的计算机”。目前,公司正在建立一个人工智能与计算化学的云端量子计算平台,并开放了名为Forest 的测试版API,通过量子-经典混合计算模型,直接集成现有的云基础设施,把量子计算机作为加速器。公司曾在著名孵化器Y Combinator接受孵化,并在孵化期间获250 万美元种子轮融资。2017 年3月,公司连续获得Andreessen Horowitz 领投的2400 万美元A 轮融资,以及Vy Capital 领投、Andreessen Horowitz 参投的4000 万美元B 轮融资,累计融资6920 万美元。该项投资将用于公司扩大团队、拓展业务,以及用于制造和部署量子集成电路基础设施的开发。
英国公司Post-Quantum 成立于2009 年,公司以“保护世界的信息(Protectingthe World’s Information)”为使命,主攻量子加密技术。公司坦承自身的技术要得到广泛应用还为时尚早,当前主要是把握客户的短期痛点,并为他们提供一套模块化的安全解决方案,包括安全通信、需要共识批准的授权访问、生物识别,以及结合区块链的安全应用等。公司一直到创立七年后,也就是在2016 年才获得来自AM Partners、VMS Investment Group 的1030 万美元A 轮融资。据公司创始人Andersen Cheng 回顾,因为公司的业务过于新颖和复杂,许多投资机构甚至听不懂他们在做什么,所以公司的融资经历非常艰难而曲折,而新投资者在5 分钟内就搞明白了是怎么回事。从他们的经历可以看出,坚持下来,并静待“有缘人”是多么重要。

3. 学习&&课程

3.1 入门书籍

更多资料学习

3.2 学习建议和资料

Theory](https://arxiv.org/pdf/1106.14...

3.3 nature


4. 有意思的方向

  • AI quantum Computing
  • 盲量子计算
  • 量子模拟器,量子语言

5. 咕噜咕噜

量子计算机的发展史
  • In the 1970’s Fredkin, Toffoli, Bennett and others began to look into the possibility of reversible computation to avoid power loss.Since quantum mechanics is reversible, a possible link between computing and quantum devices was suggestedSome early work on quantum computation occurred in the 80’s1982 Benioff: Quantum computers are universal.
  • 1982 Feynman: Quantum computer could simulate other quantum systems.1993 Bernstein, Vazirani and Yao: Quantum systems are more powerful than classical computers.
关键名词解释
  1. 量子的叠加态
量子的神秘之处首先体现在它的“状态”。在宏观世界里,任何一个物体在某一时刻有着确定的状态和确定的位置。但在微观世界里,量子却可以同时处于多种状态。叠加态是“0”态和“1”态的任意线性叠加,它以一定的概率同时存在于“0”态和“1”态之间。量子不像半导体只能记录0与1,可以同时表示多种状态,如果把半导体比成单一乐器,量子计算机就像交响乐团,一次运算可以处理多种不同状况。

2.量子纠缠

根据量子力学理论,如果两个量子之间形成了“纠缠态”,那么无论相隔多远,当一个量子的状态发生变化,另一个量子也会超光速“瞬间”发生如同心灵感应的变化。也就是说,当其中一颗被操作(例如量子测量)而状态发生变化,另一颗也会即刻发生相应的状态变化。

量子比特就是利用了这些性质,实现了天然的并行计算。我们可以通过特定技术对量子态进行一次变换,即可对所有状态同时操作,且只消耗 1 单位时间。试想一下,一个64位的量子比特可以同时表示0~264-1的所有整数,那我们做一次kx的乘法操作,就相当于同时计算了k0、k1、…、k(264-1)!

也就是说,当对海量数据进行处理时,传统计算机输入一次运算一次,而量子计算这种并行处理方式的速率足以让传统计算机望尘莫及。尤其是在多种并行运算或者多种操作的情况下,随着处理数据量的增加,量子计算机比传统计算机的优势会实现指数级的增长。

  1. 量子门
目前的电子计算机还有个热耗散的问题,根据兰道尔原理,信息的损失将导致发热,而经典逻辑门运算都是不可逆计算,会带来信息损失进而发热(虽然很少)。量子门是操作量子比特的基本单元,量子门是可逆的,信息没有损失,因而量子计算机可以自循环而没有热耗散。
  1. 量子测量
跟经典计算机的另一个区别,就是量子比特始终处在叠加态之上,只有经过测量,你才可能获得自己想要的结果。但是,量子力学里面有个基本的定理叫做量子不可克隆定理,无法对一个未知量子态精确复制,使得每个复制态与初始量子态完全相同。所以只能多次执行,多次测量。还是用前面的例子来说明,在执行完kx的操作后,我们同时计算出了k0、k1、…、k(2^64-1)所有这些结果,但我可能只关心其中某一个特定的结果,譬如k100的结果。那我们就需要对量子比特进行若干次测量,每次测量都会得到一个具体的kx的结果,直到我们遇到了x=100的情况,才可以得到k*100的结果。这种反复的计算和测量,看似比经典计算低效。但是考虑到状态空间是非常巨大的,合理的叠加态设计会使得多次计算和测量要远比经典计算更加高效。
量子计算机是在1980年代由费米首次提出的,很快就得到了物理学家和计算机学家的关注。目前,虽然具体的实体设备还处在探索阶段,但基于量子计算原理,人们已经构造了很多的量子算法。这里列举其中最著名的几个:
  1. Grover算法:
计算机科学家Grover提出一种复杂度为0√N的搜索算法,它是量子计算中非常重要的算法,基于量子门和量子测量原理,与经典的计算比较大的差别表现在量子计算是把所有的数据看作一个整体去做运算,在数据量比较大的情况下这个算法在搜索运算中相较传统算法得到极大提升。并且,无论是在机器学习中还是日常的实际业务领域,搜索都是常用的场景,如果我们能够在相关的硬件上实现Grover算法,很多集成系统都会极大的提升性能。
  1. Shor算法:
第二个非常重要的算法是在安全领域非常重要的算法。它提出了一种复杂度为0(logN)的质因数分解演算法,可以迅速破解现在的安全体系基础——RSA加密,这本来是需要天文数字的算力,在应用Shor算法后变得异常简单。可以说,Shor算法足以颠覆目前的信息安全体系。
  1. HHL算法:
该领域在2008年HHL量子算法(以三位创始人Aram Harrow,Avinathan Hassidim和Seth Lloyd命名)出现之后就开始了快速发展。HHL算法解决了涉及多自由度的广泛线性代数问题,解决问题的速度比任何传统超级计算机都要快。并且,由于大部分机器学习都涉及到这些高自由度的(高维)代数问题,一些机器学习研究人员已经转向了HHL的研究潮流。过去几年中,基于HHL的量子机器学习算法在技术文献中不断增多。这个算法开创了整个量子机器学习时代。
- Hamiltonians
- interdisciplinary
- Toffoli
- Shor’s algorithm
- Hilbert space:量子力学中,一个物理系统可以表示为一个复希尔伯特空间,其中的向量是描述系统可能状态的波函数。
查看原文

赞 0 收藏 0 评论 0

认证与成就

  • 获得 37 次点赞
  • 获得 5 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 5 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2015-08-28
个人主页被 1k 人浏览