一、Go环境部署(适用其中一种方法,非必须安装)

1、下载安装包https://golang.google.cn/dl/,选择Linux版本并下载

grafana 采集mongo库数据 grafana mongodb_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