DevOps - Automation : Basic Command Line Tools 1වන කොටස
  • 1
  • administrators

    මම අද සිට ඔයාලට DevOps Automation ගැන කියාදෙන පාඩම් මාලාව අරම්බ කරනව. කොටස් 24කින් මෙම පාඩම් මාලාව අවසන් කරන්න කටයුතු කරල තියෙන්නෙ. දින 3කට වරක් කොටස බැගින් publish කරන්න තමා මූලික සැලසුම් සකස් කරල තියෙන්නෙ. දැන් ඔයාලට මූලික UNIX / Linux කමාන්ඩ්ස් ගැන හොද දැනුමක් තිබෙන නිසා මෙම පාඩම් මාලාව හොදින් අවබෝධ කරගැනීමට පුළුවන්.අපි අද මුලින්ම කථා කරන්නෙ මේ පාඩම් මාලාව ඉදිරියට කරගෙන යාමට අපිට අවශ්‍ය වන මූලික කමාන්ඩ්ස් ලයින් ටූල්ස් (Basic Command Line Tools) ගැනයි.
    මම මේ ටූල්ස් ටික මුලින්ම දෙන්නෙ ඉදිරියේදි Automation ක්‍රියාවලියට අපිට් ඒවා යොදාගැනීමට ඇති හැකියාව නිසයි.

    1. ip

    අපේ IP address එක පිළිබද තොරතුරු ලබාගැනීමට බාවිතා කරන tool එකකි.
    ට්‍රයි ip address show හෝ ip addr sh

    nix@Dell ~ $ ip addr sh
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
        link/ether ec:f4:bb:72:e7:39 brd ff:ff:ff:ff:ff:ff
    3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 64:5a:04:b8:d8:be brd ff:ff:ff:ff:ff:ff
        inet 192.168.43.74/24 brd 192.168.43.255 scope global dynamic wlp2s0
           valid_lft 5128sec preferred_lft 5128sec
        inet6 fe80::b01b:6527:406b:8ace/64 scope link 
           valid_lft forever preferred_lft forever
    4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default                                                                              
        link/ether 02:42:b1:00:b2:48 brd ff:ff:ff:ff:ff:ff                                                                                                                       
        inet 172.17.0.1/16 scope global docker0                                                                                                                                  
           valid_lft forever preferred_lft forever                                                                                                                               
    nix@Dell ~ $
    

    මෙමගින් interfaces සියලගේම IP address . MAC address සහ state යනාදිය එකවර අපිට බලාගන්න පුළුවන්.
    දැන් බලමු තෝරාගත් එක interface එකක විස්තර ලබාගන්නා ආකාරය.

    ට්‍රයි ip addr sh wlp2s0

    nix@Dell ~ $ ip addr sh wlp2s0
    3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 64:5a:04:b8:d8:be brd ff:ff:ff:ff:ff:ff
        inet 192.168.43.74/24 brd 192.168.43.255 scope global dynamic wlp2s0
           valid_lft 4794sec preferred_lft 4794sec
        inet6 fe80::b01b:6527:406b:8ace/64 scope link 
           valid_lft forever preferred_lft forever
    nix@Dell ~ $
    

    දැන් අපි බලමු interface එකකට IP address එකක් add කරගන්නා ආකාරය.
    අපි මෙහිදී මෙන්න මේ විදියේ format එකක් බාවිතා කරනව. ip addr add <IP address>/<CIDR> dev <device>
    මෙතන <CIDR> කියල කියන්නෙ අපේ IP එකට අදාල netmask එක දෙන්න ඕන Classless Inter-Domain Routing (CIDR) කියන format එකට.
    උදාහරණයක් විදියට 255.255.255.0 අපිට /24 ලෙස නිරුපනය කරන්න පුළුවන්.
    මම දැන් මගේ wlp2s0 එකට තවත් IP එකක් add කරන්න හදන්නෙ. අපිට මේවිදියට add කරන්න පුළුවන් කම ලැබෙන්නෙ root privileges ඇති විටයි එනිසා මම sudo යොදා ගනිමින් කමාන්ඩ් එක රන් කරනව

    ට්‍රයි sudo ip addr add 192.168.43.77/24 dev wlp2s0

    nix@Dell ~ $ sudo ip addr add 192.168.43.77/24 dev wlp2s0
    [sudo] password for nix: 
    nix@Dell ~ $
    

    දැන් චෙක් කරල බලමු.

    ට්‍රයි ip addr sh wlp2s0

    nix@Dell ~ $ ip addr sh wlp2s0
    3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 64:5a:04:b8:d8:be brd ff:ff:ff:ff:ff:ff
        inet 192.168.43.74/24 brd 192.168.43.255 scope global dynamic wlp2s0
           valid_lft 7051sec preferred_lft 7051sec
        inet 192.168.43.77/24 scope global secondary wlp2s0
           valid_lft forever preferred_lft forever
        inet6 fe80::b01b:6527:406b:8ace/64 scope link 
           valid_lft forever preferred_lft forever
    nix@Dell ~ $
    

    වැඩේ හරි wlp2s0 එකට 192.168.43.77 add වෙලා තියෙන්නෙ ඔය අපූරුවට.
    අලුත් IP එකට ping පාරකුත් දල බලමු.

    ට්‍රයි ping 192.168.43.77 -c 5

    nix@Dell ~ $ ping 192.168.43.77 -c 5
    PING 192.168.43.77 (192.168.43.77) 56(84) bytes of data.
    64 bytes from 192.168.43.77: icmp_seq=1 ttl=64 time=0.073 ms
    64 bytes from 192.168.43.77: icmp_seq=2 ttl=64 time=0.029 ms
    64 bytes from 192.168.43.77: icmp_seq=3 ttl=64 time=0.050 ms
    64 bytes from 192.168.43.77: icmp_seq=4 ttl=64 time=0.055 ms
    64 bytes from 192.168.43.77: icmp_seq=5 ttl=64 time=0.056 ms
    --- 192.168.43.77 ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 3996ms
    rtt min/avg/max/mdev = 0.029/0.052/0.073/0.016 ms
    nix@Dell ~ $
    

    දැන් බලමු කොහොමද අපි අන්තිමට add කරපු IP එක interface එකෙන් ඉවත් කරන්නෙ කියල. එක කරන්නෙ ip addr del <IP address>/<CIDR> dev <device> මෙන්න මේ ආකාරයට.

    ට්‍රයි sudo ip addr del 192.168.43.77/24 dev wlp2s0

    nix@Dell ~ $ sudo ip addr del 192.168.43.77/24 dev wlp2s0
    nix@Dell ~ $
    

    දැන් චෙක් කරල බලමු .

    ට්‍රයි ip addr sh wlp2s0

    nix@Dell ~ $ ip addr sh wlp2s0
    3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 64:5a:04:b8:d8:be brd ff:ff:ff:ff:ff:ff
        inet 192.168.43.74/24 brd 192.168.43.255 scope global dynamic wlp2s0
           valid_lft 6635sec preferred_lft 6635sec
        inet6 fe80::b01b:6527:406b:8ace/64 scope link 
           valid_lft forever preferred_lft forever
    nix@Dell ~ $
    

    192.168.43.77 එක wlp2s0 කියන interface එකෙන් ඉවත්වෙලා.

    අපිට මේ ip කමාන්ඩ් එක බාවිතා කරල අපේ physical interfaces ටික UP සහ DOWN කරන්නත් පුළුවන්. මේ බලන්න කරන ආකාරය.
    මුලින්ම down කරන ආකාරය දෙස බලමු.

    ට්‍රයි sudo ip link set wlp2s0 down

    nix@Dell ~ $ sudo ip link set wlp2s0 down
    nix@Dell ~ $
    

    චෙක් කරමු මෙලෙස

    ට්‍රයි ip addr sh wlp2s0

    nix@Dell ~ $ ip addr sh wlp2s0
    3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
        link/ether 64:5a:04:b8:d8:be brd ff:ff:ff:ff:ff:ff
        inet 192.168.43.74/24 brd 192.168.43.255 scope global dynamic wlp2s0
           valid_lft 6408sec preferred_lft 6408sec
    nix@Dell ~ $
    

    දැන් අපි down කරපු interface එක මේ ආකාරයට up කරමු.

    ට්‍රයි sudo ip link set wlp2s0 up

    nix@Dell ~ $ sudo ip link set wlp2s0 up
    nix@Dell ~ $
    

    දැන් චෙක් කරල බලමු

    ට්‍රයි ip addr sh wlp2s0

    nix@Dell ~ $ ip addr sh wlp2s0
    3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 64:5a:04:b8:d8:be brd ff:ff:ff:ff:ff:ff
        inet 192.168.43.74/24 brd 192.168.43.255 scope global dynamic wlp2s0
           valid_lft 6383sec preferred_lft 6383sec
    nix@Dell ~ $
    

    අපි ඊළගට ඉගෙන ගනිමු මේ ip tool එක බාවිතා කරල අපේ networking stack අවුල් තියෙනවද කියල සොයා බලන ආකාරය.
    මුලින්ම සියලුම interfaces වල basic network statistics ලබාගන්නා ආකාරය බලමු.

    ට්‍රයි ip -s link

    nix@Dell ~ $ ip -s link
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        RX: bytes  packets  errors  dropped overrun mcast   
        174551     1984     0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        174551     1984     0       0       0       0       
    2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
        link/ether ec:f4:bb:72:e7:39 brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast   
        0          0        0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        0          0        0       0       0       0       
    3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
        link/ether 64:5a:04:b8:d8:be brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast   
        74712694   77068    0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        10146384   58216    0       0       0       0       
    4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
        link/ether 02:42:b1:00:b2:48 brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast   
        0          0        0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        0          0        0       0       0       0       
    nix@Dell ~ $
    

    අපිට මේ කමාන්ඩ් එකෙන් සියලුම interfaces ටික හා ඒවා configure කර ඇති options ටික දැක ගන්න පුළුවන්. උදාහරණ ලෙස multicast එක enable කරලද නැතිද වග . current state එක UP ද DOWN ද වග.
    අපිට එක interface එකක විස්තර ලබාගන්න අවශ්‍ය විට අපි මේ කමාන්ඩ් එක යොදාගන්නව

    ට්‍රයි ip -s link ls wlp2s0

    nix@Dell ~ $ ip -s link ls wlp2s0
    3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
        link/ether 64:5a:04:b8:d8:be brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast   
        2887162    5981     0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        1321175    6229     0       0       0       0       
    nix@Dell ~ $
    

    ඔයාලට පේනව නේද මම ls සමග interface එකේ නම ලෙස "wlp2s0" යොදාගෙන තියෙනව.

    අපිට ඉහත කමාන්ඩ් එකට අමතර -s switch එකක් එකතුකර ගැනිමෙන් ලැබෙන විස්තර ප්‍රමාණය වැඩිකරගන්න පුළුවන්.

    ට්‍රයි ip -s -s link ls wlp2s0

    nix@Dell ~ $ ip -s -s link ls wlp2s0
    3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
        link/ether 64:5a:04:b8:d8:be brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast   
        2887228    5982     0       0       0       0       
        RX errors: length   crc     frame   fifo    missed
                   0        0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        1321269    6230     0       0       0       0       
        TX errors: aborted  fifo   window heartbeat transns
                   0        0       0       0       4       
    nix@Dell ~ $
    

    අපිට පුළුවන් ip ටූල් එකෙන් දැන් පොඩි පොඩි වැඩ ටිකක් කරගන්න අපි ඊළගට බලමු අපේ සිස්ටම් එකේ තියෙන TCP / UDP connections ගැන තොරතුරු සොයාගන්න ආකාරය බලමු. ඔයාලට මතක ඇති මම මේ පාඩම් මාලාව තුල netstat -apnut කියල කමාන්ඩ් එකක් බාවිතා කරා. අපි ඔය netstat කියන එකත් tool එකක් විදියට තමයි සලකන්නෙ. නමුත් මම දැන් කථා කරන්නෙ netstat ගැන නොවේ. ඊට වඩා functions ටිකක් වැඩිපුර තියෙන ටූල් එකක් ගැන. අපි දැන් එම ටූල් එක ගැන ඉගෙන ගනිමු.

    2) ss

    ss තමයි මම අර කලින් කියපු ටූල් එක. අපිට මේකෙන් පුළුවන් දැනට අපේ system එක තුල තිබෙන TCP / UDP connections ගැන තොරතුරු රැසක් දැනගන්න.
    මේක netstat වලට වඩා fast කියල මගේ අදහස (අත්දැකීමෙන්).
    දැන් ss යොදාගෙන අත හුරුවෙන්නත් එක්ක වැඩ ටිකක් කරල බලමු.

    ට්‍රයි ss -t

    nix@Dell ~ $ ss -t
    State       Recv-Q Send-Q                                       Local Address:Port                                                        Peer Address:Port                
    ESTAB       0      0                                                127.0.0.1:ssh                                                            127.0.0.1:46892                
    ESTAB       0      0                                            192.168.43.74:41454                                                    173.194.222.200:https                
    ESTAB       0      0                                                127.0.0.1:46892                                                          127.0.0.1:ssh                  
    ESTAB       0      0                                            192.168.43.74:38662                                                    192.241.168.226:https                
    ESTAB       0      0                                            192.168.43.74:36074                                                    213.180.193.232:https                
    ESTAB       0      0                                            192.168.43.74:38660                                                    192.241.168.226:https                
    ESTAB       0      0                                            192.168.43.74:50488                                                      173.194.44.65:https                
    ESTAB       0      0                                            192.168.43.74:43544                                                    173.194.222.189:https                
    ESTAB       0      0                                            192.168.43.74:47412                                                     93.158.134.133:12359                
    ESTAB       0      0                                            192.168.43.74:52584                                                      104.20.122.38:https                
    ESTAB       0      0                                            192.168.43.74:45514                                                      104.198.55.96:https                
    ESTAB       0      0                                            192.168.43.74:49172                                                    173.194.221.200:https                
    ESTAB       0      0                                            192.168.43.74:48470                                                    173.194.122.213:https                
    nix@Dell ~ $
    

    අපිට ss -t කමාන්ඩ් එක යොදාගෙන දැනට අරම්බවී තිබෙන TCP connections සියල්ලම දැක ගන්න පුළුවන්.
    මේ විදියට UDP connections සියල්ලත් බලාගන්න පුළුවන්.

    ට්‍රයි ss -u

    nix@Dell ~ $ ss -u
    Recv-Q Send-Q                                            Local Address:Port                                                             Peer Address:Port                
    0      0                                                 192.168.43.74:38058                                                           81.23.228.137:sip                  
    0      0                                                 192.168.43.74:38817                                                                 8.8.8.8:domain               
    nix@Dell ~ $
    

    අපිට ලැබුන result එකේ Peer Address:Port column එකට අදාලව තියෙන්නෙ 8.8.8.8:domain කියල. මෙතන මේ domain කියල පෙන්නන්නෙ DNS Server එක listen කරන UDP port 53 හා 81.23.228.137:sip එකේ sip කියන්නේ UDP port 5060 හොදද.
    අපිට මේ hostname lookups එක turn off කරගත්තොත් port number එක කෙලින්ම බලාගන්න පුළුවන්. අපි එකට n කියන switch එක (option එක) යොදා ගන්නව.

    ට්‍රයි ss -un

    nix@Dell ~ $ ss -un
    Recv-Q Send-Q                                              Local Address:Port                                                             Peer Address:Port              
    0      0                                                   192.168.43.74:38058                                                           81.23.228.137:5060               
    0      0                                                   192.168.43.74:47130                                                                 8.8.8.8:53                 
    nix@Dell ~ $
    

    දැක්කනේද වෙනස hostname lookups නැතිවිට අපිට ප්‍රතිපල ඉක්මනින්ම ගන්න පුළුවන්, ඒ කියන්නෙ fast. මම මේ කියන්නෙ connections දහස් ගණනින් තියෙන වෙලාවට. :D
    දැන් අපි බලමු අපේ system එකේ තියන connection ආරම්බ කිරීමට ඇහුම්කන් දෙන ports මොනවද කියල. මේව තමා එක් එක් services වල listen ports කියල අපි කියන්නේ.
    මුලින්ම TCP ports ටික බලමු

    ට්‍රයි ss -ltn

    nix@Dell ~ $ ss -ltn
    State       Recv-Q Send-Q                                         Local Address:Port                                                        Peer Address:Port              
    LISTEN      0      50                                                 127.0.0.1:36143                                                                  *:*                  
    LISTEN      0      128                                                        *:80                                                                     *:*                  
    LISTEN      0      128                                                127.0.0.1:9042                                                                   *:*                  
    LISTEN      0      5                                                  127.0.1.1:53                                                                     *:*                  
    LISTEN      0      128                                                        *:22                                                                     *:*                  
    LISTEN      0      128                                                127.0.0.1:8118                                                                   *:*                  
    LISTEN      0      5                                                  127.0.0.1:631                                                                    *:*                  
    LISTEN      0      10                                                         *:1720                                                                   *:*                  
    LISTEN      0      128                                                127.0.0.1:7000                                                                   *:*                  
    LISTEN      0      50                                                 127.0.0.1:7199                                                                   *:*                  
    LISTEN      0      80                                                        :::3306                                                                  :::*                  
    LISTEN      0      128                                                       :::22                                                                    :::*                  
    LISTEN      0      5                                                        ::1:631                                                                   :::*                  
    nix@Dell ~ $
    

    දැන් බලමු UDP ports ටික

    ට්‍රයි ss -lun

    nix@Dell ~ $ ss -lun
    State       Recv-Q Send-Q                                         Local Address:Port                                                        Peer Address:Port              
    UNCONN      0      0                                                          *:58363                                                                  *:*                  
    UNCONN      0      0                                                   *%wlp2s0:41984                                                                  *:*                  
    UNCONN      0      0                                                 172.17.0.1:5060                                                                   *:*                  
    UNCONN      0      0                                              192.168.43.74:5060                                                                   *:*                  
    UNCONN      0      0                                                          *:5353                                                                   *:*                  
    UNCONN      0      0                                                          *:5353                                                                   *:*                  
    UNCONN      0      0                                                  127.0.1.1:53                                                                     *:*                  
    UNCONN      0      0                                                          *:68                                                                     *:*                  
    UNCONN      0      0                                              192.168.43.74:123                                                                    *:*                  
    UNCONN      0      0                                                  127.0.0.1:123                                                                    *:*                  
    UNCONN      0      0                                                          *:123                                                                    *:*                  
    UNCONN      0      0                                                          *:631                                                                    *:*                  
    UNCONN      0      0                                                         :::5353                                                                  :::*                  
    UNCONN      0      0                                                         :::5353                                                                  :::*                  
    UNCONN      0      0                                                         :::48111                                                                 :::*                  
    UNCONN      0      0                           fe80::b01b:6527:406b:8ace%wlp2s0:123                                                                   :::*                  
    UNCONN      0      0                                                        ::1:123                                                                   :::*                  
    UNCONN      0      0                                                         :::123                                                                   :::*                  
    nix@Dell ~ $
    

    දැන් බලමු TCP හා UDP එකවර බලාගන්න ආකාරය.

    ට්‍රයි ss -ltun

    nix@Dell ~ $ ss -ltun
    Netid State      Recv-Q Send-Q                                       Local Address:Port                                                      Peer Address:Port              
    udp   UNCONN     0      0                                                        *:58363                                                                *:*                  
    udp   UNCONN     0      0                                                 *%wlp2s0:41984                                                                *:*                  
    udp   UNCONN     0      0                                               172.17.0.1:5060                                                                 *:*                  
    udp   UNCONN     0      0                                            192.168.43.74:5060                                                                 *:*                  
    udp   UNCONN     0      0                                                        *:5353                                                                 *:*                  
    udp   UNCONN     0      0                                                        *:5353                                                                 *:*                  
    udp   UNCONN     0      0                                                127.0.1.1:53                                                                   *:*                  
    udp   UNCONN     0      0                                                        *:68                                                                   *:*                  
    udp   UNCONN     0      0                                            192.168.43.74:123                                                                  *:*                  
    udp   UNCONN     0      0                                                127.0.0.1:123                                                                  *:*                  
    udp   UNCONN     0      0                                                        *:123                                                                  *:*                  
    udp   UNCONN     0      0                                                        *:631                                                                  *:*                  
    udp   UNCONN     0      0                                                       :::5353                                                                :::*                  
    udp   UNCONN     0      0                                                       :::5353                                                                :::*                  
    udp   UNCONN     0      0                                                       :::48111                                                               :::*                  
    udp   UNCONN     0      0                         fe80::b01b:6527:406b:8ace%wlp2s0:123                                                                 :::*                  
    udp   UNCONN     0      0                                                      ::1:123                                                                 :::*                  
    udp   UNCONN     0      0                                                       :::123                                                                 :::*                  
    tcp   LISTEN     0      50                                               127.0.0.1:36143                                                                *:*                  
    tcp   LISTEN     0      128                                                      *:80                                                                   *:*                  
    tcp   LISTEN     0      128                                              127.0.0.1:9042                                                                 *:*                  
    tcp   LISTEN     0      5                                                127.0.1.1:53                                                                   *:*                  
    tcp   LISTEN     0      128                                                      *:22                                                                   *:*                  
    tcp   LISTEN     0      128                                              127.0.0.1:8118                                                                 *:*                  
    tcp   LISTEN     0      10                                                       *:1720                                                                 *:*                  
    tcp   LISTEN     0      128                                              127.0.0.1:7000                                                                 *:*                  
    tcp   LISTEN     0      50                                               127.0.0.1:7199                                                                 *:*                  
    tcp   LISTEN     0      80                                                      :::3306                                                                :::*                  
    tcp   LISTEN     0      128                                                     :::22                                                                  :::*                  
    nix@Dell ~ $
    

    දැන් අපිට පුළුවන් අපේ Linux system එකේ තියෙන TCP / UDP connections ටික බලාගන්න. අපි ඊළගට බලමු අපි කොහොමද අපේ system එකේ තිබෙන OS එකේ statistics ටික හා applications වල performance monitoring කරන්නේ කොහොමද කියල.

  • 0
  • administrators

    3) vmstat

    මේ කමාන්ඩ් එකෙන් අපිට Linux system එකක system statistics ගැන report එකක් ගන්න පුළුවන්.

    ට්‍රයි vmstat

    nix@Dell ~ $ vmstat
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     0  0      0 2886764 222084 2603216    0    0    66    70  482 1498  9  2 86  2  0
    nix@Dell ~ $
    

    ට්‍රයි vmstat 5 10

    nix@Dell ~ $ vmstat 5 10
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     0  0      0 2889768 223724 2610036    0    0    95   119  715 2200 14  3 80  3  0
     0  0      0 2889528 223736 2610020    0    0     0   108  356  788  1  0 98  1  0
     0  0      0 2891364 223740 2608864    0    0     0     8  324  756  0  0 99  0  0
     0  0      0 2891640 223756 2608868    0    0     0   138  402  892  1  0 97  2  0
     0  0      0 2892384 223756 2607912    0    0     0     4  330  735  0  0 99  0  0
     0  0      0 2892260 223760 2607912    0    0     0    22  323  730  0  0 99  0  0
     0  0      0 2894616 223768 2604572    0    0     0    52  335  727  1  0 99  0  0
     0  0      0 2894740 223772 2604572    0    0     0     3  337  739  0  0 99  0  0
     0  0      0 2894804 223772 2604572    0    0     0     0  324  719  0  0 99  0  0
     0  0      0 2893972 223772 2604580    0    0     0     0  356  804  1  0 99  0  0
    nix@Dell ~ $
    

    මම මෙතන 5 හා 10 කියල බාවිතා කරල තිබෙන්නෙ ඇයි කියල මම ඔයාලට දැන් පැහැදිලි කරල දෙන්නම්. මෙතන 5 හා 10 ය කියන්නෙ, තත්පර 5 කට වරක් දස වාරයක් statistics ටික ලබා ගන්න කියන එක. එනම් සම්පුර්ණ කිර්යවලිය ට තත්පර 50ක් ගතවෙනව.
    අපිට මේ vmstat කමාන්ඩ් එක system එකේ active සහ inactive memory usage එක බලාගන්නත් යොදාගන්න පුළුවන්.

    ට්‍රයි vmstat -a 5 10

    nix@Dell ~ $ vmstat -a 5 10
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
     0  0      0 2877636 1700192 3943252    0    0    91   116  698 2139 14  3 81  3  0
     0  0      0 2877620 1700192 3943720    0    0     0    91  347  837  1  0 99  0  0
     0  0      0 2877388 1700156 3943816    0    0     0   118  344  739  0  0 99  0  0
     0  0      0 2877808 1699896 3943808    0    0     0    30  343  738  0  0 99  0  0
     0  0      0 2877668 1699896 3944016    0    0     0    69  339  742  0  0 99  0  0
     0  0      0 2886100 1691512 3943796    0    0     0     2  330  722  0  0 99  0  0
     0  0      0 2885136 1691512 3944340    0    0     2    38  441 1133  1  0 98  0  0
     0  0      0 2885508 1691600 3944268    0    0     1   394  756 1294  2  1 95  2  0
     0  0      0 2885508 1691604 3944780    0    0     0    52  530  957  1  0 98  1  0
     0  0      0 2888236 1688260 3944904    0    0     0     9  355  756  0  0 99  0  0
    nix@Dell ~ $
    

    අපිට ඉහල තියෙන කමාන්ඩ් එකේ result එක Mega Bytes වලින් දැක ගන්න ඕනනම් මේ විදියට කමාන්ඩ් එක දෙන්න.

    ට්‍රයි vmstat -a -S M 5 10

    nix@Dell ~ $ vmstat -a -S M 5 10
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
     1  0      0   2808   1661   3852    0    0    87   111  674 2063 13  3 81  3  0
     0  0      0   2806   1664   3851    0    0     0     3  484 1043  2  0 98  0  0
     0  0      0   2809   1660   3851    0    0     0    57  339  759  1  0 99  0  0
     0  0      0   2809   1660   3852    0    0     0     6  336  730  1  0 99  0  0
     0  0      0   2817   1652   3852    0    0     0   101 1027 2251  4  1 94  2  0
     0  0      0   2825   1645   3851    0    0     0    79 1288 3814  4  2 92  2  0
     0  0      0   2791   1666   3864    0    0     0   143 1995 10064 14  4 76  6  0
     0  0      0   2815   1656   3850    0    0     0   157 1213 2560  2  1 95  2  0
     0  0      0   2816   1655   3848    0    0     0    48 1582 7297  7  2 87  4  0
     0  0      0   2819   1653   3848    0    0     0    14 1386 5028  5  2 91  2  0
    nix@Dell ~ $
    

    අපි දැන් බලමු vmstat මගින් disk හා block device වල statistics දැන ගන්නා ආකාරය.

    ට්‍රයි vmstat -d 5 2

    nix@Dell ~ $ vmstat -d 5 2
    disk- ------------reads------------ ------------writes----------- -----IO------
           total merged sectors      ms  total merged sectors      ms    cur    sec
    loop0      0      0       0       0      0      0       0       0      0      0
    loop1      0      0       0       0      0      0       0       0      0      0
    loop2      0      0       0       0      0      0       0       0      0      0
    loop3      0      0       0       0      0      0       0       0      0      0
    loop4      0      0       0       0      0      0       0       0      0      0
    loop5      0      0       0       0      0      0       0       0      0      0
    loop6      0      0       0       0      0      0       0       0      0      0
    loop7      0      0       0       0      0      0       0       0      0      0
    sda    60391   4317 3482880 2879296  75961 106566 4639450 2003720      0    782
    sr0        0      0       0       0      0      0       0       0      0      0
    loop0      0      0       0       0      0      0       0       0      0      0
    loop1      0      0       0       0      0      0       0       0      0      0
    loop2      0      0       0       0      0      0       0       0      0      0
    loop3      0      0       0       0      0      0       0       0      0      0
    loop4      0      0       0       0      0      0       0       0      0      0
    loop5      0      0       0       0      0      0       0       0      0      0
    loop6      0      0       0       0      0      0       0       0      0      0
    loop7      0      0       0       0      0      0       0       0      0      0
    sda    60391   4317 3482880 2879296  75964 106573 4639802 2003764      0    782
    sr0        0      0       0       0      0      0       0       0      0      0
    nix@Dell ~ $
    

    අපිට මේ vmstat මගින් disk වල statistics දැන ගන්න පුළුවන් වුනාට එයට වැඩ හොද tool එකක් ගැන අපි ඊළගට ඉගෙන ගනිමු.

    1. iostat

    අපිට මේ tool එක බවිතකරලා අපේ server එකේ I /O ගැන detailed statistics අරගන්න පුළුවන්. ඉතා වැදගත් දේ තමයි මෙම tool එකට හැකියාවක් තිබෙනවා disk වල බලපෑමෙන් ඇතිවෙන performance bottlenecks එක ගැන පැහැදිලි හෝඩුවාවක් ලබාදෙන්න. මම iostat ගැන දීර්ග විස්තරයක් මෙහිදී නොකරමි. UNIX / Linux සංකීර්ණ කමාන්ඩ්ස් පාඩම් මාලාවෙන් මම iostat ගැන පැහැදිලි විස්තරයක් කරනව. මෙහිදී කරන්නෙ මුලික වශයෙන් හදුන්වාදීමක් පමණයි.
    Ubuntu වලනම් අපිට වෙනම මේක install කරගන්න ඕන ඒ සදහා අපිට sysstat කියන package එක install කිරීමට සිදුවෙනව. අපි මුලින්ම sysstat install කර වැඩේට බහිමු.

    ට්‍රයි sudo apt-get install -y sysstat

    nix@Dell ~ $ sudo apt-get install -y sysstat
    [sudo] password for nix: 
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Suggested packages:
      isag
    The following NEW packages will be installed:
      sysstat
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 0 B/243 kB of archives.
    After this operation, 1,004 kB of additional disk space will be used.
    Preconfiguring packages ...
    Selecting previously unselected package sysstat.
    (Reading database ... 493147 files and directories currently installed.)
    Preparing to unpack .../sysstat_11.2.0-1ubuntu0.1_amd64.deb ...
    Unpacking sysstat (11.2.0-1ubuntu0.1) ...
    Processing triggers for systemd (229-4ubuntu17) ...
    Processing triggers for ureadahead (0.100.0-19) ...
    Processing triggers for doc-base (0.10.7) ...
    Processing 1 added doc-base file...
    Registering documents with scrollkeeper...
    Processing triggers for man-db (2.7.5-1) ...
    Setting up sysstat (11.2.0-1ubuntu0.1) ...
    update-alternatives: using /usr/bin/sar.sysstat to provide /usr/bin/sar (sar) in auto mode
    nix@Dell ~ $
    

    අපි දැන් බලමු iostat කම්න්ඩ් එක බාවිතා කරන්න පුලුවන්ද කියලා.

    ට්‍රයි which iostat

    nix@Dell ~ $ which iostat
    /usr/bin/iostat
    nix@Dell ~ $
    

    ඔය පෙන්නල තියෙන්නෙ /usr/bin/ එක ඇතුලෙ iostat ඉන්නව කියල. ඒ කියන්නෙ අපිට කමාන්ඩ් එකක් විදියට බාවිතා කරන්න පුළුවන්.

    ට්‍රයි iostat

    nix@Dell ~ $ iostat
    Linux 4.4.0-83-generic (Dell)   07/19/2017      _x86_64_        (4 CPU)
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               9.19    0.05    2.36    2.22    0.00   86.18
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               3.44        39.84        60.72    1748164    2664665
    nix@Dell ~ $
    

    මම ඔයාලට දැන් කියන්නෙ ඉතමත් වැදගත් කාරණයක්. අපි ඉහත ආකාරයට iostat කමාන්ඩ් එක, එක් වාරයක් ප්‍රතිපල ලබා දෙන ආකාරයට රන් කලවිට අපිට ලැබෙන්නෙ අපේ server එක boot කල අවස්ථාවේ සිට එකතු කරගත් තොරතුරු මත පදනම් කරගත් ගණනය කිරීමක්. අපි පහත ආකාරයට වාර කිහිපයකට තොරතුරු ලබාගන්න අවසථාවේදී පළමු වර එනම් මුලින්ම තිබෙන තොරතුරු ටික system එක boot කල අවසතවේ සිට සලකනු ලබන අතර. එතැන් සිට අනෙක් සියලුම වාර සදහා සලකනු ලබන්නේ. ඊට පෙර වාරයේ iostat මගින් ප්‍රතිපල ලබාදුන් අවස්ථාවේ සිටයි.

    ට්‍රයි iostat 2 5

    nix@Dell ~ $ iostat 2 5
    Linux 4.4.0-83-generic (Dell)   07/19/2017      _x86_64_        (4 CPU)
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               9.18    0.05    2.36    2.22    0.00   86.19
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               3.44        39.83        60.72    1748164    2665041
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.88    0.00    0.50    0.38    0.00   98.24
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               1.50         0.00        20.00          0         40
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               1.25    0.00    0.88    0.13    0.00   97.74
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               0.00         0.00         0.00          0          0
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               3.88    0.00    0.63    3.01    0.00   92.48
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda              13.50         0.00       192.00          0        384
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               4.73    0.00    1.74    1.25    0.00   92.28
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda              10.50         0.00        96.00          0        192
    nix@Dell ~ $
    

    දැක්ක නේද මේකත් vmstat වගේ අපිට statistics ලබාගන්න ඕන වාර ගණන හා කාල පරතරය වෙනස් කරන්න පුළුවන්.
    iostat මගින් පෙරනිමි (by default) ලෙස අපට ලබාදෙන්නෙ සියලුම disk හා සියලුම CPU ගැන තොරතුරු එකතුවක් ලෙසයි. අපිට විශේෂිත එක disk එකක තොරතුරු ලබා ගැනීමට අවශ්‍ය නම් අපිට එය මෙලෙස ඉටුකරගන්න පුළුවන්.

    ට්‍රයි iostat -d -p sda

    nix@Dell ~ $ iostat -d -p sda
    Linux 4.4.0-83-generic (Dell)   07/19/2017      _x86_64_        (4 CPU)
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               3.47        39.25        61.42    1748164    2735525
    sda1              0.00         0.15         0.00       6531          1
    sda2              3.34        38.98        61.42    1736093    2735524
    sda3              0.00         0.07         0.00       3260          0
    nix@Dell ~ $
    

    අපි දැන් බලමු අපේ system එකේ historical resource usage එක කොහොමද බලා ගන්නෙ කියල.
    මම එයත් කෙටියෙන් විස්තර කරන්නම්.

    5) sar

    sar කියන්නෙබාවිතාකරන්න ත් Ubunutu වල sysstat කියන package එකේ තිබෙන තවත් tool එකක්. මේකෙ sar කියල නම හැදිලා තියෙන්නෙ System Activity Report කියන එකෙන්.

    ට්‍රයි sar

    nix@Dell ~ $ sar
    Cannot open /var/log/sysstat/sa19: No such file or directory
    Please check if data collecting is enabled
    nix@Dell ~ $
    

    හ්ම්! ඒකියන්නෙ අපි sar රන්කරන්න කලින් sysstat ගෙ service එක enable කරල ඉන්න ඕන.
    අපිට එය මේ ආකාරයට enable කරන්න පුළුවන්.

    ට්‍රයි sudo sed -i "s/^ENABLED="false"/ENABLED="true"/" /etc/default/sysstat

    nix@Dell ~ $ sudo sed -i "s/^ENABLED=\"false\"/ENABLED=\"true\"/" /etc/default/sysstat
    nix@Dell ~ $
    

    චෙක් කරලම බලමු

    ට්‍රයි cat /etc/default/sysstat|grep "ENABLED"

    nix@Dell ~ $ cat /etc/default/sysstat|grep "ENABLED"
    ENABLED="true"
    nix@Dell ~ $
    

    දැන් අපි sysstat ගෙ service එක start කරමු.

    ට්‍රයි sudo service sysstat start

    nix@Dell ~ $ sudo service sysstat start
    nix@Dell ~ $
    

    දැන් service එක රන් වෙනවද කියල චෙක් කරල බලමු.

    ට්‍රයි service sysstat status

    nix@Dell ~ $ service sysstat status
    ● sysstat.service - LSB: Start/stop sysstat's sadc
       Loaded: loaded (/etc/init.d/sysstat; bad; vendor preset: enabled)
       Active: active (exited) since Wed 2017-07-19 22:31:11 +0530; 20s ago
         Docs: man:systemd-sysv-generator(8)
      Process: 27774 ExecStop=/etc/init.d/sysstat stop (code=exited, status=0/SUCCESS)
      Process: 27781 ExecStart=/etc/init.d/sysstat start (code=exited, status=0/SUCCESS)
    Jul 19 22:31:11 Dell systemd[1]: Starting LSB: Start/stop sysstat's sadc...
    Jul 19 22:31:11 Dell sysstat[27781]:  * Starting the system activity data collector sadc
    Jul 19 22:31:11 Dell sysstat[27781]:    ...done.
    Jul 19 22:31:11 Dell systemd[1]: Started LSB: Start/stop sysstat's sadc.
    nix@Dell ~ $
    

    දැන් අපිට මෙතැන් සිට sar කමාන්ඩ්ස් බාවිතා කරන්න පුළුවන්.
    තව පොඩ්ඩක් ඉන්න වෙනව කමන්ඩ්ස් ට්‍රයි කරන්න කලින්. මොකද sar හි data එකතු කරගන්න එයාට විනාඩි 10ක් (by default) බලාගෙන ඉන්න වෙනව. sar මගින් data එකතු කරන්නෙ විනාඩි 10න් දහය. මේක තමා sar ගේ පෙරනිමි අගය. අපිට මෙම අගය /etc/cron.d/sysstat file එක edit කිරීමෙන් වෙනස් කරගන්න පුළුවන්. මේක cron job එකක්, දැන්ම ඕක වෙනස් කරන්න එපා . අපි default අගයෙන් වැඩේ පටන් ගනිමු. cron job පාඩම තාම මග හොදේ ...
    ඔන්න මම විනාඩි 25 විතර ඉදල පලවෙනි කමාන්ඩ් එක රන් කරා.

    ට්‍රයි sar -u

    nix@Dell ~ $ sar -u
    Linux 4.4.0-83-generic (Dell)   07/19/2017      _x86_64_        (4 CPU)
    10:31:11 PM  LINUX RESTART      (4 CPU)
    10:35:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    10:45:01 PM     all     12.48      0.01      3.46      1.43      0.00     82.62
    Average:        all     12.48      0.01      3.46      1.43      0.00     82.62
    nix@Dell ~ $
    

    අපිට මේ කමාන්ඩ් එකෙන් basic CPU statistics ටික බලාගන්න පුළුවන්.

    ට්‍රයි sar -r

    nix@Dell ~ $ sar -r
    Linux 4.4.0-83-generic (Dell)   07/19/2017      _x86_64_        (4 CPU)
    10:31:11 PM  LINUX RESTART      (4 CPU)
    10:35:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
    10:45:01 PM   1267212  10914604     89.60    254292   2712768  16380948     66.47   5389088   1817876       148
    10:55:01 PM   1646944  10534872     86.48    255452   2541348  15755796     63.94   5195912   1637252       140
    Average:      1457078  10724738     88.04    254872   2627058  16068372     65.20   5292500   1727564       144
    nix@Dell ~ $
    

    අපිට මේ sar -r කියන කමාන්ඩ් එකෙන් memory statistics ටික බලාගන්න පුළුවන්.
    sar ගැන වැඩි විස්තර UNIX / Linux සංකීර්ණ කමාන්ඩ්ස් පාඩම් මාලාවෙන් බලාපොරොත්තු වන්න.

    අපි Basic Command Line Tools 2වන කොටසින් නැවත හමුවෙමු.

    ස්තුතියි!

  • 2
    Posts
  • 136
    Views
  • Log in to reply
  • Looks like your connection to DevOps - Automation : Basic Command Line Tools 1වන කොටස was lost, please wait while we try to reconnect.