docker环境下的Grafana安装
一 、docker环境下的Grafana安装
1. 安装grafana
查看可用image
[root@DL ~]# docker search grafana
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
grafana/grafana The official Grafana docker container 1484
拉取grafana镜像:
[root@DL ~]# docker pull grafana/grafana
2. 运行grafana:
[root@DL ~]# docker run -d -p 3000:3000 --name=grafana grafana/grafana
3. 登录web:http://192.168.0.202:3000/login 初始登录参数:admin/admin
至此,基本安装完成,但是,考虑到一旦docker容器停止,其存储的数据就会丢失,因此还需要进行数据的持久化工作。
使用“docker inspect grafana”(其中的grafana是容器名称)命令查看grafana容器内的配置,可以看到如下环境变量信息:
"Env": [
"PATH=/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GF_PATHS_CONFIG=/etc/grafana/grafana.ini",
"GF_PATHS_DATA=/var/lib/grafana",
"GF_PATHS_HOME=/usr/share/grafana",
"GF_PATHS_LOGS=/var/log/grafana",
"GF_PATHS_PLUGINS=/var/lib/grafana/plugins",
"GF_PATHS_PROVISIONING=/etc/grafana/provisioning"
分析上述环境变量信息得知,需要把容器内的/etc/grafana、/var/lib/grafana、/var/log/grafana三个目录挂载到宿主机上以确保数据不随容器的停止而消失。
4. 宿主机新建3个目录
mkdir -p /root/grafana/conf
mkdir -p /root/grafana/data
mkdir -p /root/grafana/log
5. 在前述运行的grafana系统中,把上述三个目录内的文件和目录全部拷贝到宿主机中。
[root@DL ~]# docker cp grafana:/etc/grafana/. /root/grafana/conf
[root@DL ~]# docker cp grafana:/var/lib/grafana/. /root/grafana/data
[root@DL ~]# docker cp grafana:/var/log/grafana/. /root/grafana/log
6. 修改宿主机新建目录的所有者为grafana(这一步很重要,若缺乏所有者权限配合,grafana页面在登录时就会出错,无法登录)
(1)宿主机新增用户grafana,并修改UID和GID都为472(因为容器内的运行用户也是grafana,且UID和GID都是472)
useradd grafana
vi /etc/passwd
...
grafana:x:472:472::/home/grafana:/bin/bash
vi /etc/group
...
grafana:x:472:
(2)修改grafana目录所有者为grafana
[root@DL ~]# chown -R grafana:grafana grafana
[root@DL ~]# ls -lhat
...
drwxr-xr-x. 5 grafana grafana 41 5月 22 20:59 grafana
[root@DL ~]# ls -lhat grafana
总用量 4.0K
drwxr-xr-x. 5 grafana grafana 41 5月 22 20:59 .
drwxr-xr-x. 2 grafana grafana 6 5月 22 20:59 log
drwxr-xr-x. 4 grafana grafana 50 5月 22 20:55 data
dr-xr-x---. 18 root root 4.0K 5月 22 20:06 ..
drwxr-xr-x. 2 grafana grafana 45 5月 22 19:57 conf
7. 编制docker运行命令
vi grafana.sh
内容如下:
docker run -d --name grafana -p 3000:3000 -v /root/grafana/conf:/etc/grafana -v /root/grafana/data:/var/lib/grafana -v /root/grafana/log:/var/log/grafana grafana/grafana
8. 为grafana.sh添加执行权限
chmod +x grafana.sh
9. 运行grafana.sh
./grafana.sh
二、测试
web登录:http://192.168.0.202:3000/
三、配置邮件
vim /etc/grafana/grafana.ini
#修改一下内容
#################################### SMTP / Emailing ##########################
[smtp]
# 启用 smtp
enabled = true
# 邮件服务器地址和端口
host = smtp.189.cn:465
# 发送告警邮件邮箱账号
user = xuewenlong1993@189.cn
# 发送告警邮件邮箱密码
password = xuewenlong
;cert_file =
;key_file =
;skip_verify = false
from_address = xuewenlong1993@189.cn
from_name = Grafana
# EHLO identity in SMTP dialog (defaults to instance_name)
ehlo_identity = dashboard.example.com
[emails]
;welcome_email_on_sign_up = false
然后重新stop docker; restart docker
四、小结:
1、docker安装grafana虽然比较方便,但是,有些问题是必须高度关注的,如grafana容器内系统本身是以grafana用户身份运行的,对应的挂载目录的权限也必须调整为grafana权限。
2、在安装测试过程中用到docker一些命令配合调试工作,比较有用,这里列出如下:
docker stop/start grafana (或者容器ID) #停止/启动 grafana容器,对应有start和restart来启动和重启容器。
docker rm grafana (或者容器ID) #删除grafana容器,以便后续新建同名容器
docker logs grafana (或者容器ID) #查看grafana容器log,方便debug
docker container prune #删除运行异常的全部容器,运行异常就是直接使用 docker ps或docker container ls无法列出的容器。
docker ps -a 或 docker container ls -a #列出所有容器,包括运行异常的容器。
docker inspect grafana (或者容器ID) #查看容器grafana的配置详情,包括容器id号,挂载信息,环境变量、主机名称等等。因为其内容较多,可使用管道符到处到文件做更细致分析,如 docker inspect grafana > grafana.txt
docker exec -it grafana (或者容器ID) /bin/bash 或 docker exec -it grafana /bin/sh #进入容器grafana内的console状态,以便查探容器内的文件系统。
3、Modify permissions
The commands below run bash inside the Grafana container with your volume mapped in. This makes it possible to modify the file ownership to match the new container. Always be careful when modifying permissions.
$ docker run -ti --user root --volume "<your volume mapping here>" --entrypoint bash grafana/grafana-enterprise:8.2.0
# in the container you just started:
chown -R root:root /etc/grafana && \
chmod -R a+r /etc/grafana && \
chown -R grafana:grafana /var/lib/grafana && \
chown -R grafana:grafana /usr/share/grafana