一、Go环境部署(适用其中一种方法,非必须安装)
1、下载安装包https://golang.google.cn/dl/,选择Linux版本并下载
2、配置环境变量
tar -C /usr/local/ -xzvf go1.17.5.linux-amd64.tar.gz
vim /etc/profile
添加
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export GOPKG=$GOROOT/pkg/tool/linux_amd64
export GOARCH=amd64
export GOOS=linux
export GOPATH=/go
export PATH=$PATH:$GOBIN:$GOPKG:$GOPATH/bin
加载变量
source /etc/profile
验证
go version
二、influxDB安装部署
influxDB简介:influxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖,适合存储设备性能、日志、物联网传感器等带时间标签的数据。
1、下载
https://dl.influxdata.com/influxdb/releases/influxdb-1.8.10.x86_64.rpm
版本号随时改变,可直接进入下载页面https://portal.influxdata.com/downloads/选择最新版本。
非隔离专网环境可用wget直接下载
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.10.x86_64.rpm
安装
sudo yum localinstall influxdb-1.8.10.x86_64.rpm
启动并加入开机自启项
systemctl start influxdb
systemctl enable influxdb
选择合适的目录创建如下文件夹
mkdir -p influxdb/{data,meta,wal}
修改权限
chown -R influxdb:influxdb influxdb/
修改配置文件
vim /etc/influxdb/influxdb.conf
dir = "/data/influxdb/meta"
dir = "/data/influxdb/data"
wal-dir = "/data/influxdb/wal"
保存退出
重启服务
systemctl restart influxdb
关于influxDB数据库的配置文件各参数含义,可参考官方文档https://archive.docs.influxdata.com/influxdb/v1.2/administration/config/#retention-autocreate-true
2、创建数据库
influx
>create database prometheus
>use create database prometheus
>create user "" with password '' /根据需要创建
>exit
三、配置数据库连接
方法1、使用Remote storage adapter(不建议)
该插件为prometheus官方提供的插件,通过Prometheus的远程写协议接收样本,并将数据存入时序数据库中。
利用GO环境从github上获取或提前在相关网页下载好
go get github.com/prometheus/documentation/examples/remote_storage/remote_storage_adapter/
使用插件进行配置
./remote_storage_adapter --influxdb-url=http://127.0.0.1:8086/ --influxdb.database="prometheus" --influxdb.retention-policy=autogen
//上述执行语句可放入后台运行
配置文件
vim prometheus.yml
添加如下:
# 远程写配置
remote_write:
- url: "http://localhost:9201/write"
#若需要使用特定用户,可在url行下添加如下内容,读配置下也需添加相应内容
# basic_auth:
# username: user
# password: passwd
# 远程读配置
remote_read:
- url: "http://localhost:9201/read"
###################
可将remote_storage_adapter写成系统服务。
vim /usr/lib/systemd/system/remote_storage_adapter.service
添加
[Service]
Restart=on-failure
WorkingDirectory=/data/ #根据自己存放目录
ExecStart=/data/remote_storage_adapter --influxdb-url=http://127.0.0.1:8086/ --influxdb.database="prometheus" --influxdb.retention-policy=autogen
[Install]
WantedBy=multi-user.target
方法2、直接使用API(建议)
prometheus.yml配置文件中添加
remote_write:
- url: "http://ip:8086/api/v1/prom/write?db=prometheus"
remote_read:
- url: "http://ip:8086/api/v1/prom/read?db=prometheus"
可参考官方文档: https://docs.influxdata.com/influxdb/v1.7/supported_protocols/prometheus/
检测数据写入
prometheus以及grafana安装配置在之前文章详细介绍,这里不重复补充了
重启prometheus
systemctl restart prometheus.service
查看数据是否写入influxDB
influx
>use prometheus
>show measurements
若出现如下,表示数据写入成功
> show measurements
name: measurements
name
----
go_gc_duration_seconds
go_gc_duration_seconds_count
go_gc_duration_seconds_sum
go_goroutines
go_info
go_memstats_alloc_bytes
go_memstats_alloc_bytes_total
go_memstats_buck_hash_sys_bytes
go_memstats_frees_total
go_memstats_gc_cpu_fraction
go_memstats_gc_sys_bytes
go_memstats_heap_alloc_bytes
go_memstats_heap_idle_bytes
go_memstats_heap_inuse_bytes
..........
....
scrape_samples_post_metric_relabeling
scrape_samples_scraped
scrape_series_added
up
>
到这里prometheus+influxDB安装完成了,而influxDB的相应配置需要自己根据实际生产需要去修改完善,列如修改保留策略。
四、mysql+grafana
1、mysql安装部署
安装方法比较多种,选择合适的。这里仅作为自己安装中的一些注意事项,以及自己以后安装过程中的一些命令参考。
1、安装包除了官网外,还可以在国内一些镜像网站下载。界面清晰易查找
如:http://mirrors.sohu.com/mysql/
2、安装前卸载mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-*****
3、若初始化./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize失败,需要安装报错所需依赖包
4、即使是redhat/centos7版本,依然使用service mysql start/stop.
添加服务
chkconfig --add mysql
chkconfig --level 345 mysql on
添加快捷方式
ln -s /usr/local/mysql/bin/mysql /usr/bin/
2、grafana连接mysql
1、mysql创建grafana数据库
create database grafana;
create user grafana@'%' IDENTIFIED by 'grafana';
grant all on grafana.* to grafana@'%';
flush privileges;
2、编辑grafana配置文件
vim /etc/grafana/grafana.ini
[database]
type = mysql
host = 127.0.0.1:3306
name = grafana
user = grafana
password =grafana
url = mysql://grafana:grafana@localhost:3306/grafana
#[session]
#provider = mysql
#provider_config = `grafana:grafana@tcp(127.0.0.1:3306)/grafana`
3、重启服务
systemctl restart grafana-server.service
查看数据
use grafana
show tables;
出现则代表数据写入成功
Tables_in_grafana |
+--------------------------+
| alert |
| alert_notification |
| alert_notification_state |
| alert_rule_tag |
| annotation |
| annotation_tag |
| api_key |
| cache_data |
| dashboard |
| dashboard_acl |
| dashboard_provisioning |
| dashboard_snapshot |
| dashboard_tag |
| dashboard_usage_by_day |
| dashboard_usage_sums |
| dashboard_version |
| data_source |
| data_source_acl |
| data_source_usage_by_day |
| license_token |
| login_attempt |
| migration_log |
| org |
| org_user |
| playlist |
| playlist_item |
| plugin_setting |
| preferences |
| quota |
| report |
| report_settings |
| server_lock |
| session |
| star |
| tag |
| team |
| team_group |
| team_member |
| temp_user |
| test_data |
| user |
| user_auth |
| user_auth_token |
| user_dashboard_views |
+--------------------------+
44 rows in set (0.00 sec)
3、grafana数据迁移
数据不导入,会出现grafana显示空白等现象。
systemctl stop grafana-server
编辑如下脚本vim export.sh
#!/bin/bash
DB=$1
TABLES=$(sqlite3 $DB .tables | sed -r 's/(\S+)\s+(\S)/\1\n\2/g' | grep -v migration_log)
for t in $TABLES; do
echo "TRUNCATE TABLE $t;"
done
for t in $TABLES; do
echo -e ".mode insert $t\nselect * from $t;"
done | sqlite3 $DB
执行数据导出(选择数据库的家目录)
sh export.sh /var/lib/grafana/grafana.db > grafana.sql
按照第2步检查配置文件
启停一次grafana服务以加载mysql
登录mysql
source grafana.sql //导入数据
启动grafana