none
IIS FTP Logs RRS feed

  • Discussion générale

  • Bonjour,

    Nous utilisons un script récupéré sur Technet (qui fonctionne très bien), mais le souci c'est que nos logs IIS en souffrent. 

    En fait pour chaque fichier lu et transféré les logs IIS s'encombrent du dizaine de lignes. 

    Ma question est la suivante, comment faire pour que les logs IIS soient moins encombrés. 

    Ci dessous le script PowerShell :

    #Variables
    $ftp = 'ftp://X.X.X.X:PORT/YYY/'
    $user = "Grumpy" 
    
    $pass = "thiSiSmYpassword"
    
    $sem = "D:\FTPData\Scripts\sem_files.txt"
    $dat = "D:\FTPData\Scripts\dat_files.txt"
    $source = "D:\FTPData\"
    $folder = "D:\FTPData\Scripts\content_source_folder.txt"
    $ftp_files = "D:\FTPData\Scripts\ftp_files.txt"
    $logs = "D:\FTPData\Scripts\logs\Logs.txt"
    $varMaDate = get-date -format "yyyy MM dd HH mm ss"
    Get-ChildItem -Name $source *.sem | out-file $sem
    Get-ChildItem -Attributes !Directory -Name $source *.* | out-file $folder
    $content = Get-Content "$sem" | foreach { $_ -replace ".sem",".dat" }
    
    Set-Content -Path "$dat" -Value $content
    $webclient = New-Object System.Net.WebClient
    
     
    $webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass) 
    
      
    ForEach($item in (Get-content $sem,$dat )) {
    $uri = New-Object System.Uri($ftp+$item)
    
    $webclient.UploadFile($uri,"$source\$item")
    }
    function Get-FtpDirectoryList{
        param(
            $Uri,
            $user,
            $pass
        )
        Try{
        $ftp = [System.Net.FtpWebRequest]::Create($Uri)
        if ($user) { $ftp.Credentials = New-Object System.Net.NetworkCredential($user, $pass) }
        $ftp.method = [system.net.WebRequestMethods+ftp]::ListDirectoryDetails
        $response = $ftp.GetResponse()
        $responseStream = $response.GetResponseStream()
        $readStream = new-object System.IO.StreamReader($responseStream, [System.Text.Encoding]::UTF8)
        $readstream.ReadToEnd()
        $readStream.Close()
        $response.Close()
        }
        Catch{Throw $_}
    }
    Get-FtpDirectoryList $ftp | out-file $ftp_files
    
    ForEach($line in (Get-content $folder )) {
    if ( get-content $ftp_files | where {$_ -like "*$line*"}   )
    {
    Write-output "$varMaDate --- The file $line was deleted. File is present on the FTP server" | out-file -Append -Noclobber $logs
    remove-item "$source\$line"}
    else{
    Write-output "$varMaDate --- The file $line was not deleted because it is not present on the FTP server" | out-file -Append -Noclobber $logs
    }
    }
    remove-item "D:\FTPData\Scripts\*.txt"

    Et ici une partie des logs pour vous donner une idée : 

    2018-10-16 16:49:59 X.X.X.X - Y.Y.Y.Y PORT ControlChannelOpened - - 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8-
    2018-10-16 16:49:59 X.X.X.X - Y.Y.Y.Y PORT AUTH TLS 234 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8-
    2018-10-16 16:49:59 X.X.X.X - Y.Y.Y.Y PORT USER gdethujjjhr331 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8-
    2018-10-16 16:49:59 X.X.X.X Domain\User Y.Y.Y.Y PORT PASS *** 230 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8/
    2018-10-16 16:49:59 X.X.X.X Domain\User Y.Y.Y.Y PORT PBSZ 0 200 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8-
    2018-10-16 16:49:59 X.X.X.X Domain\User Y.Y.Y.Y PORT PROT P 200 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8-
    2018-10-16 16:49:59 X.X.X.X Domain\User Y.Y.Y.Y PORT OPTS utf8+on 200 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8-
    2018-10-16 16:49:59 X.X.X.X Domain\User Y.Y.Y.Y PORT PWD - 257 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8-
    2018-10-16 16:49:59 X.X.X.X Domain\User Y.Y.Y.Y PORT MDTM CBS/IN/BT/Completed/ALT2MENI.HISDAYPL.O044R6.D180717.DAT.OK 213 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8/CBS/IN/BT/Completed/ALT2MENI.HISDAYPL.O044R6.D180717.DAT.OK
    2018-10-16 16:49:59 X.X.X.X Domain\User Y.Y.Y.Y PORT QUIT - 221 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8-
    2018-10-16 16:49:59 X.X.X.X Domain\User Y.Y.Y.Y PORT ControlChannelClosed - - 0 0 7yu5R456-9n54-2835-731b-z900h5ec5hj8

    Et à chaque fichier toutes ces lignes sont inscrites dans les logs. J'obtiens donc 1.5 Go de logs / jour et je dois les garder 180 jours.

    Donc le volume lié au logs est beaucoup trop volumineux.

    vendredi 2 novembre 2018 15:47

Toutes les réponses

  • Bonjour,

    C'est pas nouveau que les logs IIS sont volumineux justement et c'est l'objectif pour pouvoir troubleshooter en cas de problème.

    Ce qu'il vous faut faire, c'est scripter leur archivage plutot.

    Ex : Le lundi on fait un .rar de tous les logs de la semaine passée et on les met sur un autre volume par exemple.

    C'est exactement ce qu'il se passe sous exchange par exemple ou les logs IIS peuvent atteindre plus de 50Go si on ne fait rien.

    Donc ma recommandation ce n'est pas de modifier votre script mais plutôt de faire une compression des fichiers et de les déplacer ou non selon le besoin.


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    lundi 5 novembre 2018 07:34
  • Merci, c'est bien ce que je pensais aussi :( 

    Par contre est-il possible de baisser le log level de IIS afin d'en avoir moins ?

    J'ai ma réponse merci pour le coup de main.

    Pour info pour ceux qui chercheraient :

     Customizing IIS logs

    • Modifié ignifluus lundi 5 novembre 2018 09:29
    lundi 5 novembre 2018 09:05