Zabbix 監控 docker容器 提示權限不夠的問題

Zabbix 監控 docker 提示權限不夠的問題linux

 

背景

隨着docker在項目中的應用愈來愈多,docker的運行狀態成了須要關注的問題,使用zabbix對docker容器進行監控,不但能夠關注容器自己的運行狀態,還能夠收集docker容器運行過程當中使用的cpu,內存等狀況,以供之後進行數據分析,對性能調優有所幫助。docker

Zabbix監控配置

參考服務器

https://blog.csdn.net/yang00322/article/details/77895301性能

第二種方法測試

 

碰到的問題

監控項取值會報以下錯誤:字體

ZBX_NOTSUPPORTED: Cannot open memory.stat fileui

 

自定義了幾個key,this

UserParameter=docker.memusage[*],cat /sys/fs/cgroup/memory/system.slice/docker-$1.scope/memory.usage_in_bytes.net

UserParameter=docker.memlimit[*],cat /sys/fs/cgroup/memory/system.slice/docker-$1.scope/memory.limit_in_bytes插件

UserParameter=docker.memswusage[*],cat /sys/fs/cgroup/memory/system.slice/docker-$1.scope/memory.memsw.usage_in_bytes

UserParameter=docker.memswlimit[*],cat /sys/fs/cgroup/memory/system.slice/docker-$1.scope/memory.memsw.limit_in_bytes

 

以上key是直接讀取文件裏的值來獲取內存數據。

 

在服務端用zabbix_get命令獲取key值,結果以下:

cat:/sys/fs/cgroup/memory/system.slice/docker-xxx.scope/memory.usage_in_bytes: 權限不夠

 

排錯

在agent服務器上用命令

Sodu –u zabbix cat /sys/fs/cgroup/memory/system.slice/docker-xxx.scope/memory.usage_in_bytes

可以獲取數據,證實文件權限是沒有問題的。

 

因爲以上問題在測試環境沒有問題,在比較環境以後發現以下不一樣:

生產環境:

 

測試環境:

 

多是因爲SELinux的緣由,查看SELinux啓動狀態

生產環境:

 

測試環境:

 

據此推斷可能與SELinux規則有關。

查看SELinux

 

無規則,經過zabbix_agent進程讀取文件的權限被制止了。

正確的應該是以下輸出

 

 

NOTE:如提示沒有sesearch ,須要安裝setools,使用命令 yum install setools –y 進行安裝。

 

到此能夠肯定SELinux引發了文件沒法被zabbix讀取。

解決

使用setroubleshoot對SELinux日誌進行分析,在分析前要肯定setroubleshoot已經安裝,如沒有安裝,使用yum install setroubleshoot –y 進行安裝便可。

 

1.提取audit日誌

確認auditd服務啓用

Systemctl status auditd 查看服務是否啓用。

 

SELinux 缺省會經過 Linux 審計系統(auditd)將日誌寫在 /var/log/audit/audit.log 內,而這項務服缺省爲啓用的。倘若 auditd 並未運行,信息將會被寫進 /var/log/messages。SELinux 的日誌都被標籤有 AVC 這個關鍵字,方便它們從其它信息中過濾出來。

使用命令  sealert -a /var/log/audit/audit.log > /opt/audit_report  生成錯誤信息報告

查看報告

Cat  /opt/audit_report

紅色字體爲報告中解決問題提出的方法,照方法執行命令便可。

 

SELinux is preventing /usr/bin/cat from read access on the 文件 memory.usage_in_bytes.

 

*****  插件 catchall (100. 置信度) 建議  ********************************************

 

If you believe that cat should be allowed read access on the memory.usage_in_bytes file by default.

Then 應該將這個狀況做爲 bug 報告。

能夠生成本地策略模塊以容許此訪問。

Do

allow this access for now by executing:

# ausearch -c 'cat' --raw | audit2allow -M my-cat

# semodule -i my-cat.pp

 

 

更多信息:

源環境 (Context)                 system_u:system_r:zabbix_agent_t:s0

目標環境                          system_u:object_r:cgroup_t:s0

目標對象                          memory.usage_in_bytes [ file ]

源                             cat

源路徑                           /usr/bin/cat

端口                            <Unknown>

主機                            <Unknown>

源 RPM 軟件包                     coreutils-8.22-18.el7.x86_64

目標 RPM 軟件包                   

策略 RPM                        selinux-policy-3.13.1-166.el7.noarch

Selinux 已啓用                   True

策略類型                          targeted

強制模式                          Enforcing

主機名                           HIK-TMS-APP01

平臺                            Linux HIK-TMS-APP01 3.10.0-693.el7.x86_64 #1 SMP

                              Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64

警報計數                          1

第一個                           2018-09-30 16:10:50 CST

最後一個                          2018-09-30 16:10:50 CST

本地 ID                         978d7c52-3227-4020-a350-06f09ac92152

 

原始覈查信息

type=AVC msg=audit(1538295050.838:128388): avc:  denied  { read } for  pid=22685 comm="cat" name="memory.usage_in_bytes" dev="cgroup" ino=5333887 scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:object_r:cgroup_t:s0 tclass=file

 

 

type=SYSCALL msg=audit(1538295050.838:128388): arch=x86_64 syscall=open success=no exit=EACCES a0=7ffda4b44f25 a1=0 a2=1fffffffffff0000 a3=7ffda4b42e30 items=0 ppid=3812 pid=22685 auid=4294967295 uid=996 gid=993 euid=996 suid=996 fsuid=996 egid=993 sgid=993 fsgid=993 tty=(none) ses=4294967295 comm=cat exe=/usr/bin/cat subj=system_u:system_r:zabbix_agent_t:s0 key=(null)

 

Hash: cat,zabbix_agent_t,cgroup_t,file,read

 

2.解決方法

根據autid日誌中的方法執行以下

[root@xxx ~]# ausearch -c 'cat' --raw | audit2allow -M my-cat

******************** IMPORTANT ***********************

To make this policy package active, execute:

 

semodule -i my-cat.pp

 

[root@xxx ~]# semodule -i my-cat.pp

 

執行zabbix_get 仍報權限不足問題。

ZBX_NOTSUPPORTED: cat: /sys/fs/cgroup/memory/system.slice/docker-05aa677af22b530429fc60d887c1776bae61362f61505d10f29dde87613aaf1b.scope/memory.usage_in_bytes: 權限不夠

 

 

再次查看autid日誌,有以下信息。

 

SELinux is preventing /usr/bin/cat from open access on the 文件 /sys/fs/cgroup/memory/system.slice/docker-05aa677af22b530429fc60d887c1776bae61362f61505d10f29dde87613aaf1b.scope/memory.usage_in_bytes.

 

*****  插件 catchall (100. 置信度) 建議  ********************************************

 

If you believe that cat should be allowed open access on the memory.usage_in_bytes file by default.

Then 應該將這個狀況做爲 bug 報告。

能夠生成本地策略模塊以容許此訪問。

Do

allow this access for now by executing:

# ausearch -c 'cat' --raw | audit2allow -M my-cat

# semodule -i my-cat.pp

 

 

更多信息:

源環境 (Context)                 system_u:system_r:zabbix_agent_t:s0

目標環境                          system_u:object_r:cgroup_t:s0

目標對象                          /sys/fs/cgroup/memory/system.slice/docker-05aa677a

                              f22b530429fc60d887c1776bae61362f61505d10f29dde8761

                              3aaf1b.scope/memory.usage_in_bytes [ file ]

源                             cat

源路徑                           /usr/bin/cat

端口                            <Unknown>

主機                            <Unknown>

源 RPM 軟件包                     coreutils-8.22-18.el7.x86_64

目標 RPM 軟件包                   

策略 RPM                        selinux-policy-3.13.1-166.el7.noarch

Selinux 已啓用                   True

策略類型                          targeted

強制模式                          Enforcing

主機名                           HIK-TMS-APP01

平臺                            Linux HIK-TMS-APP01 3.10.0-693.el7.x86_64 #1 SMP

                              Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64

警報計數                          7

第一個                           2018-09-30 16:25:18 CST

最後一個                          2018-09-30 16:39:16 CST

本地 ID                         21376c49-d19a-4f16-a7f3-8d4844ca8bf0

 

原始覈查信息

type=AVC msg=audit(1538296756.811:128402): avc:  denied  { open } for  pid=24418 comm="cat" path="/sys/fs/cgroup/memory/system.slice/docker-05aa677af22b530429fc60d887c1776bae61362f61505d10f29dde87613aaf1b.scope/memory.usage_in_bytes" dev

="cgroup" ino=325467647 scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:object_r:cgroup_t:s0 tclass=file

 

 

type=SYSCALL msg=audit(1538296756.811:128402): arch=x86_64 syscall=open success=no exit=EACCES a0=7ffde5de7ed7 a1=0 a2=1fffffffffff0000 a3=7ffde5de6100 items=0 ppid=23753 pid=24418 auid=4294967295 uid=996 gid=993 euid=996 suid=996 fsuid=

996 egid=993 sgid=993 fsgid=993 tty=(none) ses=4294967295 comm=cat exe=/usr/bin/cat subj=system_u:system_r:zabbix_agent_t:s0 key=(null)

 

Hash: cat,zabbix_agent_t,cgroup_t,file,open

 

 

type=MAC_POLICY_LOAD msg=audit(1538297325.807:128415): policy loaded auid=0 ses=7423

type=SYSCALL msg=audit(1538297325.807:128415): arch=c000003e syscall=1 success=yes exit=3783833 a0=4 a1=7f332ae68010 a2=39bc99 a3=7ffc7d665ad0 items=0 ppid=25055 pid=25064 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=7423 comm="load_policy" exe="/usr/sbin/load_policy" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)

type=PROCTITLE msg=audit(1538297325.807:128415): proctitle="/sbin/load_policy"

 

 

 

再執行一次

[root@xxx ~]# ausearch -c 'cat' --raw | audit2allow -M my-cat

******************** IMPORTANT ***********************

To make this policy package active, execute:

 

semodule -i my-cat.pp

 

[root@xxx ~]# semodule -i my-cat.pp

 

 

[root@xxbin]# ./zabbix_get -s 10.1.11.239 -k docker.memusage[05aa677af22b530429fc60d887c1776bae61362f61505d10f29dde87613aaf1b]

1360359424

取得數據,問題解決。

 

總結

權限不足通常由兩部分解決

  1. 文件權限 rwx
  2. SELinux文件上下文件

此次的問題是因爲zabbix_agent_t對cgroup_t沒有規則說明產生沒法訪問,添加規則問題解決。

相關文章
相關標籤/搜索